1use crate::core_arch::{simd::*, x86::*};
2use crate::intrinsics::simd::*;
3
4#[cfg(test)]
5use stdarch_test::assert_instr;
6
7#[inline]
11#[target_feature(enable = "avx512cd")]
12#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
13#[cfg_attr(test, assert_instr(vpbroadcast))] pub fn _mm512_broadcastmw_epi32(k: __mmask16) -> __m512i {
15 _mm512_set1_epi32(k as i32)
16}
17
18#[inline]
22#[target_feature(enable = "avx512cd,avx512vl")]
23#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
24#[cfg_attr(test, assert_instr(vpbroadcast))] pub fn _mm256_broadcastmw_epi32(k: __mmask16) -> __m256i {
26 _mm256_set1_epi32(k as i32)
27}
28
29#[inline]
33#[target_feature(enable = "avx512cd,avx512vl")]
34#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
35#[cfg_attr(test, assert_instr(vpbroadcast))] pub fn _mm_broadcastmw_epi32(k: __mmask16) -> __m128i {
37 _mm_set1_epi32(k as i32)
38}
39
40#[inline]
44#[target_feature(enable = "avx512cd")]
45#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
46#[cfg_attr(test, assert_instr(vpbroadcast))] pub fn _mm512_broadcastmb_epi64(k: __mmask8) -> __m512i {
48 _mm512_set1_epi64(k as i64)
49}
50
51#[inline]
55#[target_feature(enable = "avx512cd,avx512vl")]
56#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
57#[cfg_attr(test, assert_instr(vpbroadcast))] pub fn _mm256_broadcastmb_epi64(k: __mmask8) -> __m256i {
59 _mm256_set1_epi64x(k as i64)
60}
61
62#[inline]
66#[target_feature(enable = "avx512cd,avx512vl")]
67#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
68#[cfg_attr(test, assert_instr(vpbroadcast))] pub fn _mm_broadcastmb_epi64(k: __mmask8) -> __m128i {
70 _mm_set1_epi64x(k as i64)
71}
72
73#[inline]
77#[target_feature(enable = "avx512cd")]
78#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
79#[cfg_attr(test, assert_instr(vpconflictd))]
80pub fn _mm512_conflict_epi32(a: __m512i) -> __m512i {
81 unsafe { transmute(vpconflictd(a.as_i32x16())) }
82}
83
84#[inline]
88#[target_feature(enable = "avx512cd")]
89#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
90#[cfg_attr(test, assert_instr(vpconflictd))]
91pub fn _mm512_mask_conflict_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
92 unsafe {
93 let conflict = _mm512_conflict_epi32(a).as_i32x16();
94 transmute(simd_select_bitmask(k, conflict, src.as_i32x16()))
95 }
96}
97
98#[inline]
102#[target_feature(enable = "avx512cd")]
103#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
104#[cfg_attr(test, assert_instr(vpconflictd))]
105pub fn _mm512_maskz_conflict_epi32(k: __mmask16, a: __m512i) -> __m512i {
106 unsafe {
107 let conflict = _mm512_conflict_epi32(a).as_i32x16();
108 transmute(simd_select_bitmask(k, conflict, i32x16::ZERO))
109 }
110}
111
112#[inline]
116#[target_feature(enable = "avx512cd,avx512vl")]
117#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
118#[cfg_attr(test, assert_instr(vpconflictd))]
119pub fn _mm256_conflict_epi32(a: __m256i) -> __m256i {
120 unsafe { transmute(vpconflictd256(a.as_i32x8())) }
121}
122
123#[inline]
127#[target_feature(enable = "avx512cd,avx512vl")]
128#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
129#[cfg_attr(test, assert_instr(vpconflictd))]
130pub fn _mm256_mask_conflict_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
131 unsafe {
132 let conflict = _mm256_conflict_epi32(a).as_i32x8();
133 transmute(simd_select_bitmask(k, conflict, src.as_i32x8()))
134 }
135}
136
137#[inline]
141#[target_feature(enable = "avx512cd,avx512vl")]
142#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
143#[cfg_attr(test, assert_instr(vpconflictd))]
144pub fn _mm256_maskz_conflict_epi32(k: __mmask8, a: __m256i) -> __m256i {
145 unsafe {
146 let conflict = _mm256_conflict_epi32(a).as_i32x8();
147 transmute(simd_select_bitmask(k, conflict, i32x8::ZERO))
148 }
149}
150
151#[inline]
155#[target_feature(enable = "avx512cd,avx512vl")]
156#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
157#[cfg_attr(test, assert_instr(vpconflictd))]
158pub fn _mm_conflict_epi32(a: __m128i) -> __m128i {
159 unsafe { transmute(vpconflictd128(a.as_i32x4())) }
160}
161
162#[inline]
166#[target_feature(enable = "avx512cd,avx512vl")]
167#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
168#[cfg_attr(test, assert_instr(vpconflictd))]
169pub fn _mm_mask_conflict_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
170 unsafe {
171 let conflict = _mm_conflict_epi32(a).as_i32x4();
172 transmute(simd_select_bitmask(k, conflict, src.as_i32x4()))
173 }
174}
175
176#[inline]
180#[target_feature(enable = "avx512cd,avx512vl")]
181#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
182#[cfg_attr(test, assert_instr(vpconflictd))]
183pub fn _mm_maskz_conflict_epi32(k: __mmask8, a: __m128i) -> __m128i {
184 unsafe {
185 let conflict = _mm_conflict_epi32(a).as_i32x4();
186 transmute(simd_select_bitmask(k, conflict, i32x4::ZERO))
187 }
188}
189
190#[inline]
194#[target_feature(enable = "avx512cd")]
195#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
196#[cfg_attr(test, assert_instr(vpconflictq))]
197pub fn _mm512_conflict_epi64(a: __m512i) -> __m512i {
198 unsafe { transmute(vpconflictq(a.as_i64x8())) }
199}
200
201#[inline]
205#[target_feature(enable = "avx512cd")]
206#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
207#[cfg_attr(test, assert_instr(vpconflictq))]
208pub fn _mm512_mask_conflict_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
209 unsafe {
210 let conflict = _mm512_conflict_epi64(a).as_i64x8();
211 transmute(simd_select_bitmask(k, conflict, src.as_i64x8()))
212 }
213}
214
215#[inline]
219#[target_feature(enable = "avx512cd")]
220#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
221#[cfg_attr(test, assert_instr(vpconflictq))]
222pub fn _mm512_maskz_conflict_epi64(k: __mmask8, a: __m512i) -> __m512i {
223 unsafe {
224 let conflict = _mm512_conflict_epi64(a).as_i64x8();
225 transmute(simd_select_bitmask(k, conflict, i64x8::ZERO))
226 }
227}
228
229#[inline]
233#[target_feature(enable = "avx512cd,avx512vl")]
234#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
235#[cfg_attr(test, assert_instr(vpconflictq))]
236pub fn _mm256_conflict_epi64(a: __m256i) -> __m256i {
237 unsafe { transmute(vpconflictq256(a.as_i64x4())) }
238}
239
240#[inline]
244#[target_feature(enable = "avx512cd,avx512vl")]
245#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
246#[cfg_attr(test, assert_instr(vpconflictq))]
247pub fn _mm256_mask_conflict_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
248 unsafe {
249 let conflict = _mm256_conflict_epi64(a).as_i64x4();
250 transmute(simd_select_bitmask(k, conflict, src.as_i64x4()))
251 }
252}
253
254#[inline]
258#[target_feature(enable = "avx512cd,avx512vl")]
259#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
260#[cfg_attr(test, assert_instr(vpconflictq))]
261pub fn _mm256_maskz_conflict_epi64(k: __mmask8, a: __m256i) -> __m256i {
262 unsafe {
263 let conflict = _mm256_conflict_epi64(a).as_i64x4();
264 transmute(simd_select_bitmask(k, conflict, i64x4::ZERO))
265 }
266}
267
268#[inline]
272#[target_feature(enable = "avx512cd,avx512vl")]
273#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
274#[cfg_attr(test, assert_instr(vpconflictq))]
275pub fn _mm_conflict_epi64(a: __m128i) -> __m128i {
276 unsafe { transmute(vpconflictq128(a.as_i64x2())) }
277}
278
279#[inline]
283#[target_feature(enable = "avx512cd,avx512vl")]
284#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
285#[cfg_attr(test, assert_instr(vpconflictq))]
286pub fn _mm_mask_conflict_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
287 unsafe {
288 let conflict = _mm_conflict_epi64(a).as_i64x2();
289 transmute(simd_select_bitmask(k, conflict, src.as_i64x2()))
290 }
291}
292
293#[inline]
297#[target_feature(enable = "avx512cd,avx512vl")]
298#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
299#[cfg_attr(test, assert_instr(vpconflictq))]
300pub fn _mm_maskz_conflict_epi64(k: __mmask8, a: __m128i) -> __m128i {
301 unsafe {
302 let conflict = _mm_conflict_epi64(a).as_i64x2();
303 transmute(simd_select_bitmask(k, conflict, i64x2::ZERO))
304 }
305}
306
307#[inline]
311#[target_feature(enable = "avx512cd")]
312#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
313#[cfg_attr(test, assert_instr(vplzcntd))]
314pub fn _mm512_lzcnt_epi32(a: __m512i) -> __m512i {
315 unsafe { transmute(simd_ctlz(a.as_i32x16())) }
316}
317
318#[inline]
322#[target_feature(enable = "avx512cd")]
323#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
324#[cfg_attr(test, assert_instr(vplzcntd))]
325pub fn _mm512_mask_lzcnt_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
326 unsafe {
327 let zerocount = _mm512_lzcnt_epi32(a).as_i32x16();
328 transmute(simd_select_bitmask(k, zerocount, src.as_i32x16()))
329 }
330}
331
332#[inline]
336#[target_feature(enable = "avx512cd")]
337#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
338#[cfg_attr(test, assert_instr(vplzcntd))]
339pub fn _mm512_maskz_lzcnt_epi32(k: __mmask16, a: __m512i) -> __m512i {
340 unsafe {
341 let zerocount = _mm512_lzcnt_epi32(a).as_i32x16();
342 transmute(simd_select_bitmask(k, zerocount, i32x16::ZERO))
343 }
344}
345
346#[inline]
350#[target_feature(enable = "avx512cd,avx512vl")]
351#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
352#[cfg_attr(test, assert_instr(vplzcntd))]
353pub fn _mm256_lzcnt_epi32(a: __m256i) -> __m256i {
354 unsafe { transmute(simd_ctlz(a.as_i32x8())) }
355}
356
357#[inline]
361#[target_feature(enable = "avx512cd,avx512vl")]
362#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
363#[cfg_attr(test, assert_instr(vplzcntd))]
364pub fn _mm256_mask_lzcnt_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
365 unsafe {
366 let zerocount = _mm256_lzcnt_epi32(a).as_i32x8();
367 transmute(simd_select_bitmask(k, zerocount, src.as_i32x8()))
368 }
369}
370
371#[inline]
375#[target_feature(enable = "avx512cd,avx512vl")]
376#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
377#[cfg_attr(test, assert_instr(vplzcntd))]
378pub fn _mm256_maskz_lzcnt_epi32(k: __mmask8, a: __m256i) -> __m256i {
379 unsafe {
380 let zerocount = _mm256_lzcnt_epi32(a).as_i32x8();
381 transmute(simd_select_bitmask(k, zerocount, i32x8::ZERO))
382 }
383}
384
385#[inline]
389#[target_feature(enable = "avx512cd,avx512vl")]
390#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
391#[cfg_attr(test, assert_instr(vplzcntd))]
392pub fn _mm_lzcnt_epi32(a: __m128i) -> __m128i {
393 unsafe { transmute(simd_ctlz(a.as_i32x4())) }
394}
395
396#[inline]
400#[target_feature(enable = "avx512cd,avx512vl")]
401#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
402#[cfg_attr(test, assert_instr(vplzcntd))]
403pub fn _mm_mask_lzcnt_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
404 unsafe {
405 let zerocount = _mm_lzcnt_epi32(a).as_i32x4();
406 transmute(simd_select_bitmask(k, zerocount, src.as_i32x4()))
407 }
408}
409
410#[inline]
414#[target_feature(enable = "avx512cd,avx512vl")]
415#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
416#[cfg_attr(test, assert_instr(vplzcntd))]
417pub fn _mm_maskz_lzcnt_epi32(k: __mmask8, a: __m128i) -> __m128i {
418 unsafe {
419 let zerocount = _mm_lzcnt_epi32(a).as_i32x4();
420 transmute(simd_select_bitmask(k, zerocount, i32x4::ZERO))
421 }
422}
423
424#[inline]
428#[target_feature(enable = "avx512cd")]
429#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
430#[cfg_attr(test, assert_instr(vplzcntq))]
431pub fn _mm512_lzcnt_epi64(a: __m512i) -> __m512i {
432 unsafe { transmute(simd_ctlz(a.as_i64x8())) }
433}
434
435#[inline]
439#[target_feature(enable = "avx512cd")]
440#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
441#[cfg_attr(test, assert_instr(vplzcntq))]
442pub fn _mm512_mask_lzcnt_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
443 unsafe {
444 let zerocount = _mm512_lzcnt_epi64(a).as_i64x8();
445 transmute(simd_select_bitmask(k, zerocount, src.as_i64x8()))
446 }
447}
448
449#[inline]
453#[target_feature(enable = "avx512cd")]
454#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
455#[cfg_attr(test, assert_instr(vplzcntq))]
456pub fn _mm512_maskz_lzcnt_epi64(k: __mmask8, a: __m512i) -> __m512i {
457 unsafe {
458 let zerocount = _mm512_lzcnt_epi64(a).as_i64x8();
459 transmute(simd_select_bitmask(k, zerocount, i64x8::ZERO))
460 }
461}
462
463#[inline]
467#[target_feature(enable = "avx512cd,avx512vl")]
468#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
469#[cfg_attr(test, assert_instr(vplzcntq))]
470pub fn _mm256_lzcnt_epi64(a: __m256i) -> __m256i {
471 unsafe { transmute(simd_ctlz(a.as_i64x4())) }
472}
473
474#[inline]
478#[target_feature(enable = "avx512cd,avx512vl")]
479#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
480#[cfg_attr(test, assert_instr(vplzcntq))]
481pub fn _mm256_mask_lzcnt_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
482 unsafe {
483 let zerocount = _mm256_lzcnt_epi64(a).as_i64x4();
484 transmute(simd_select_bitmask(k, zerocount, src.as_i64x4()))
485 }
486}
487
488#[inline]
492#[target_feature(enable = "avx512cd,avx512vl")]
493#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
494#[cfg_attr(test, assert_instr(vplzcntq))]
495pub fn _mm256_maskz_lzcnt_epi64(k: __mmask8, a: __m256i) -> __m256i {
496 unsafe {
497 let zerocount = _mm256_lzcnt_epi64(a).as_i64x4();
498 transmute(simd_select_bitmask(k, zerocount, i64x4::ZERO))
499 }
500}
501
502#[inline]
506#[target_feature(enable = "avx512cd,avx512vl")]
507#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
508#[cfg_attr(test, assert_instr(vplzcntq))]
509pub fn _mm_lzcnt_epi64(a: __m128i) -> __m128i {
510 unsafe { transmute(simd_ctlz(a.as_i64x2())) }
511}
512
513#[inline]
517#[target_feature(enable = "avx512cd,avx512vl")]
518#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
519#[cfg_attr(test, assert_instr(vplzcntq))]
520pub fn _mm_mask_lzcnt_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
521 unsafe {
522 let zerocount = _mm_lzcnt_epi64(a).as_i64x2();
523 transmute(simd_select_bitmask(k, zerocount, src.as_i64x2()))
524 }
525}
526
527#[inline]
531#[target_feature(enable = "avx512cd,avx512vl")]
532#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
533#[cfg_attr(test, assert_instr(vplzcntq))]
534pub fn _mm_maskz_lzcnt_epi64(k: __mmask8, a: __m128i) -> __m128i {
535 unsafe {
536 let zerocount = _mm_lzcnt_epi64(a).as_i64x2();
537 transmute(simd_select_bitmask(k, zerocount, i64x2::ZERO))
538 }
539}
540
541#[allow(improper_ctypes)]
542unsafe extern "C" {
543 #[link_name = "llvm.x86.avx512.conflict.d.512"]
544 fn vpconflictd(a: i32x16) -> i32x16;
545 #[link_name = "llvm.x86.avx512.conflict.d.256"]
546 fn vpconflictd256(a: i32x8) -> i32x8;
547 #[link_name = "llvm.x86.avx512.conflict.d.128"]
548 fn vpconflictd128(a: i32x4) -> i32x4;
549
550 #[link_name = "llvm.x86.avx512.conflict.q.512"]
551 fn vpconflictq(a: i64x8) -> i64x8;
552 #[link_name = "llvm.x86.avx512.conflict.q.256"]
553 fn vpconflictq256(a: i64x4) -> i64x4;
554 #[link_name = "llvm.x86.avx512.conflict.q.128"]
555 fn vpconflictq128(a: i64x2) -> i64x2;
556}
557
558#[cfg(test)]
559mod tests {
560
561 use crate::core_arch::x86::*;
562 use stdarch_test::simd_test;
563
564 #[simd_test(enable = "avx512cd")]
565 unsafe fn test_mm512_broadcastmw_epi32() {
566 let a: __mmask16 = 2;
567 let r = _mm512_broadcastmw_epi32(a);
568 let e = _mm512_set1_epi32(2);
569 assert_eq_m512i(r, e);
570 }
571
572 #[simd_test(enable = "avx512cd,avx512vl")]
573 unsafe fn test_mm256_broadcastmw_epi32() {
574 let a: __mmask16 = 2;
575 let r = _mm256_broadcastmw_epi32(a);
576 let e = _mm256_set1_epi32(2);
577 assert_eq_m256i(r, e);
578 }
579
580 #[simd_test(enable = "avx512cd,avx512vl")]
581 unsafe fn test_mm_broadcastmw_epi32() {
582 let a: __mmask16 = 2;
583 let r = _mm_broadcastmw_epi32(a);
584 let e = _mm_set1_epi32(2);
585 assert_eq_m128i(r, e);
586 }
587
588 #[simd_test(enable = "avx512cd")]
589 unsafe fn test_mm512_broadcastmb_epi64() {
590 let a: __mmask8 = 2;
591 let r = _mm512_broadcastmb_epi64(a);
592 let e = _mm512_set1_epi64(2);
593 assert_eq_m512i(r, e);
594 }
595
596 #[simd_test(enable = "avx512cd,avx512vl")]
597 unsafe fn test_mm256_broadcastmb_epi64() {
598 let a: __mmask8 = 2;
599 let r = _mm256_broadcastmb_epi64(a);
600 let e = _mm256_set1_epi64x(2);
601 assert_eq_m256i(r, e);
602 }
603
604 #[simd_test(enable = "avx512cd,avx512vl")]
605 unsafe fn test_mm_broadcastmb_epi64() {
606 let a: __mmask8 = 2;
607 let r = _mm_broadcastmb_epi64(a);
608 let e = _mm_set1_epi64x(2);
609 assert_eq_m128i(r, e);
610 }
611
612 #[simd_test(enable = "avx512cd")]
613 unsafe fn test_mm512_conflict_epi32() {
614 let a = _mm512_set1_epi32(1);
615 let r = _mm512_conflict_epi32(a);
616 let e = _mm512_set_epi32(
617 1 << 14
618 | 1 << 13
619 | 1 << 12
620 | 1 << 11
621 | 1 << 10
622 | 1 << 9
623 | 1 << 8
624 | 1 << 7
625 | 1 << 6
626 | 1 << 5
627 | 1 << 4
628 | 1 << 3
629 | 1 << 2
630 | 1 << 1
631 | 1 << 0,
632 1 << 13
633 | 1 << 12
634 | 1 << 11
635 | 1 << 10
636 | 1 << 9
637 | 1 << 8
638 | 1 << 7
639 | 1 << 6
640 | 1 << 5
641 | 1 << 4
642 | 1 << 3
643 | 1 << 2
644 | 1 << 1
645 | 1 << 0,
646 1 << 12
647 | 1 << 11
648 | 1 << 10
649 | 1 << 9
650 | 1 << 8
651 | 1 << 7
652 | 1 << 6
653 | 1 << 5
654 | 1 << 4
655 | 1 << 3
656 | 1 << 2
657 | 1 << 1
658 | 1 << 0,
659 1 << 11
660 | 1 << 10
661 | 1 << 9
662 | 1 << 8
663 | 1 << 7
664 | 1 << 6
665 | 1 << 5
666 | 1 << 4
667 | 1 << 3
668 | 1 << 2
669 | 1 << 1
670 | 1 << 0,
671 1 << 10
672 | 1 << 9
673 | 1 << 8
674 | 1 << 7
675 | 1 << 6
676 | 1 << 5
677 | 1 << 4
678 | 1 << 3
679 | 1 << 2
680 | 1 << 1
681 | 1 << 0,
682 1 << 9 | 1 << 8 | 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
683 1 << 8 | 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
684 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
685 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
686 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
687 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
688 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
689 1 << 2 | 1 << 1 | 1 << 0,
690 1 << 1 | 1 << 0,
691 1 << 0,
692 0,
693 );
694 assert_eq_m512i(r, e);
695 }
696
697 #[simd_test(enable = "avx512cd")]
698 unsafe fn test_mm512_mask_conflict_epi32() {
699 let a = _mm512_set1_epi32(1);
700 let r = _mm512_mask_conflict_epi32(a, 0, a);
701 assert_eq_m512i(r, a);
702 let r = _mm512_mask_conflict_epi32(a, 0b11111111_11111111, a);
703 let e = _mm512_set_epi32(
704 1 << 14
705 | 1 << 13
706 | 1 << 12
707 | 1 << 11
708 | 1 << 10
709 | 1 << 9
710 | 1 << 8
711 | 1 << 7
712 | 1 << 6
713 | 1 << 5
714 | 1 << 4
715 | 1 << 3
716 | 1 << 2
717 | 1 << 1
718 | 1 << 0,
719 1 << 13
720 | 1 << 12
721 | 1 << 11
722 | 1 << 10
723 | 1 << 9
724 | 1 << 8
725 | 1 << 7
726 | 1 << 6
727 | 1 << 5
728 | 1 << 4
729 | 1 << 3
730 | 1 << 2
731 | 1 << 1
732 | 1 << 0,
733 1 << 12
734 | 1 << 11
735 | 1 << 10
736 | 1 << 9
737 | 1 << 8
738 | 1 << 7
739 | 1 << 6
740 | 1 << 5
741 | 1 << 4
742 | 1 << 3
743 | 1 << 2
744 | 1 << 1
745 | 1 << 0,
746 1 << 11
747 | 1 << 10
748 | 1 << 9
749 | 1 << 8
750 | 1 << 7
751 | 1 << 6
752 | 1 << 5
753 | 1 << 4
754 | 1 << 3
755 | 1 << 2
756 | 1 << 1
757 | 1 << 0,
758 1 << 10
759 | 1 << 9
760 | 1 << 8
761 | 1 << 7
762 | 1 << 6
763 | 1 << 5
764 | 1 << 4
765 | 1 << 3
766 | 1 << 2
767 | 1 << 1
768 | 1 << 0,
769 1 << 9 | 1 << 8 | 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
770 1 << 8 | 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
771 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
772 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
773 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
774 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
775 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
776 1 << 2 | 1 << 1 | 1 << 0,
777 1 << 1 | 1 << 0,
778 1 << 0,
779 0,
780 );
781 assert_eq_m512i(r, e);
782 }
783
784 #[simd_test(enable = "avx512cd")]
785 unsafe fn test_mm512_maskz_conflict_epi32() {
786 let a = _mm512_set1_epi32(1);
787 let r = _mm512_maskz_conflict_epi32(0, a);
788 assert_eq_m512i(r, _mm512_setzero_si512());
789 let r = _mm512_maskz_conflict_epi32(0b11111111_11111111, a);
790 let e = _mm512_set_epi32(
791 1 << 14
792 | 1 << 13
793 | 1 << 12
794 | 1 << 11
795 | 1 << 10
796 | 1 << 9
797 | 1 << 8
798 | 1 << 7
799 | 1 << 6
800 | 1 << 5
801 | 1 << 4
802 | 1 << 3
803 | 1 << 2
804 | 1 << 1
805 | 1 << 0,
806 1 << 13
807 | 1 << 12
808 | 1 << 11
809 | 1 << 10
810 | 1 << 9
811 | 1 << 8
812 | 1 << 7
813 | 1 << 6
814 | 1 << 5
815 | 1 << 4
816 | 1 << 3
817 | 1 << 2
818 | 1 << 1
819 | 1 << 0,
820 1 << 12
821 | 1 << 11
822 | 1 << 10
823 | 1 << 9
824 | 1 << 8
825 | 1 << 7
826 | 1 << 6
827 | 1 << 5
828 | 1 << 4
829 | 1 << 3
830 | 1 << 2
831 | 1 << 1
832 | 1 << 0,
833 1 << 11
834 | 1 << 10
835 | 1 << 9
836 | 1 << 8
837 | 1 << 7
838 | 1 << 6
839 | 1 << 5
840 | 1 << 4
841 | 1 << 3
842 | 1 << 2
843 | 1 << 1
844 | 1 << 0,
845 1 << 10
846 | 1 << 9
847 | 1 << 8
848 | 1 << 7
849 | 1 << 6
850 | 1 << 5
851 | 1 << 4
852 | 1 << 3
853 | 1 << 2
854 | 1 << 1
855 | 1 << 0,
856 1 << 9 | 1 << 8 | 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
857 1 << 8 | 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
858 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
859 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
860 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
861 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
862 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
863 1 << 2 | 1 << 1 | 1 << 0,
864 1 << 1 | 1 << 0,
865 1 << 0,
866 0,
867 );
868 assert_eq_m512i(r, e);
869 }
870
871 #[simd_test(enable = "avx512cd,avx512vl")]
872 unsafe fn test_mm256_conflict_epi32() {
873 let a = _mm256_set1_epi32(1);
874 let r = _mm256_conflict_epi32(a);
875 let e = _mm256_set_epi32(
876 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
877 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
878 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
879 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
880 1 << 2 | 1 << 1 | 1 << 0,
881 1 << 1 | 1 << 0,
882 1 << 0,
883 0,
884 );
885 assert_eq_m256i(r, e);
886 }
887
888 #[simd_test(enable = "avx512cd,avx512vl")]
889 unsafe fn test_mm256_mask_conflict_epi32() {
890 let a = _mm256_set1_epi32(1);
891 let r = _mm256_mask_conflict_epi32(a, 0, a);
892 assert_eq_m256i(r, a);
893 let r = _mm256_mask_conflict_epi32(a, 0b11111111, a);
894 let e = _mm256_set_epi32(
895 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
896 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
897 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
898 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
899 1 << 2 | 1 << 1 | 1 << 0,
900 1 << 1 | 1 << 0,
901 1 << 0,
902 0,
903 );
904 assert_eq_m256i(r, e);
905 }
906
907 #[simd_test(enable = "avx512cd,avx512vl")]
908 unsafe fn test_mm256_maskz_conflict_epi32() {
909 let a = _mm256_set1_epi32(1);
910 let r = _mm256_maskz_conflict_epi32(0, a);
911 assert_eq_m256i(r, _mm256_setzero_si256());
912 let r = _mm256_maskz_conflict_epi32(0b11111111, a);
913 let e = _mm256_set_epi32(
914 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
915 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
916 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
917 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
918 1 << 2 | 1 << 1 | 1 << 0,
919 1 << 1 | 1 << 0,
920 1 << 0,
921 0,
922 );
923 assert_eq_m256i(r, e);
924 }
925
926 #[simd_test(enable = "avx512cd,avx512vl")]
927 unsafe fn test_mm_conflict_epi32() {
928 let a = _mm_set1_epi32(1);
929 let r = _mm_conflict_epi32(a);
930 let e = _mm_set_epi32(1 << 2 | 1 << 1 | 1 << 0, 1 << 1 | 1 << 0, 1 << 0, 0);
931 assert_eq_m128i(r, e);
932 }
933
934 #[simd_test(enable = "avx512cd,avx512vl")]
935 unsafe fn test_mm_mask_conflict_epi32() {
936 let a = _mm_set1_epi32(1);
937 let r = _mm_mask_conflict_epi32(a, 0, a);
938 assert_eq_m128i(r, a);
939 let r = _mm_mask_conflict_epi32(a, 0b00001111, a);
940 let e = _mm_set_epi32(1 << 2 | 1 << 1 | 1 << 0, 1 << 1 | 1 << 0, 1 << 0, 0);
941 assert_eq_m128i(r, e);
942 }
943
944 #[simd_test(enable = "avx512cd,avx512vl")]
945 unsafe fn test_mm_maskz_conflict_epi32() {
946 let a = _mm_set1_epi32(1);
947 let r = _mm_maskz_conflict_epi32(0, a);
948 assert_eq_m128i(r, _mm_setzero_si128());
949 let r = _mm_maskz_conflict_epi32(0b00001111, a);
950 let e = _mm_set_epi32(1 << 2 | 1 << 1 | 1 << 0, 1 << 1 | 1 << 0, 1 << 0, 0);
951 assert_eq_m128i(r, e);
952 }
953
954 #[simd_test(enable = "avx512cd")]
955 unsafe fn test_mm512_conflict_epi64() {
956 let a = _mm512_set1_epi64(1);
957 let r = _mm512_conflict_epi64(a);
958 let e = _mm512_set_epi64(
959 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
960 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
961 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
962 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
963 1 << 2 | 1 << 1 | 1 << 0,
964 1 << 1 | 1 << 0,
965 1 << 0,
966 0,
967 );
968 assert_eq_m512i(r, e);
969 }
970
971 #[simd_test(enable = "avx512cd")]
972 unsafe fn test_mm512_mask_conflict_epi64() {
973 let a = _mm512_set1_epi64(1);
974 let r = _mm512_mask_conflict_epi64(a, 0, a);
975 assert_eq_m512i(r, a);
976 let r = _mm512_mask_conflict_epi64(a, 0b11111111, a);
977 let e = _mm512_set_epi64(
978 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
979 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
980 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
981 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
982 1 << 2 | 1 << 1 | 1 << 0,
983 1 << 1 | 1 << 0,
984 1 << 0,
985 0,
986 );
987 assert_eq_m512i(r, e);
988 }
989
990 #[simd_test(enable = "avx512cd")]
991 unsafe fn test_mm512_maskz_conflict_epi64() {
992 let a = _mm512_set1_epi64(1);
993 let r = _mm512_maskz_conflict_epi64(0, a);
994 assert_eq_m512i(r, _mm512_setzero_si512());
995 let r = _mm512_maskz_conflict_epi64(0b11111111, a);
996 let e = _mm512_set_epi64(
997 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
998 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
999 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
1000 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0,
1001 1 << 2 | 1 << 1 | 1 << 0,
1002 1 << 1 | 1 << 0,
1003 1 << 0,
1004 0,
1005 );
1006 assert_eq_m512i(r, e);
1007 }
1008
1009 #[simd_test(enable = "avx512cd,avx512vl")]
1010 unsafe fn test_mm256_conflict_epi64() {
1011 let a = _mm256_set1_epi64x(1);
1012 let r = _mm256_conflict_epi64(a);
1013 let e = _mm256_set_epi64x(1 << 2 | 1 << 1 | 1 << 0, 1 << 1 | 1 << 0, 1 << 0, 0);
1014 assert_eq_m256i(r, e);
1015 }
1016
1017 #[simd_test(enable = "avx512cd,avx512vl")]
1018 unsafe fn test_mm256_mask_conflict_epi64() {
1019 let a = _mm256_set1_epi64x(1);
1020 let r = _mm256_mask_conflict_epi64(a, 0, a);
1021 assert_eq_m256i(r, a);
1022 let r = _mm256_mask_conflict_epi64(a, 0b00001111, a);
1023 let e = _mm256_set_epi64x(1 << 2 | 1 << 1 | 1 << 0, 1 << 1 | 1 << 0, 1 << 0, 0);
1024 assert_eq_m256i(r, e);
1025 }
1026
1027 #[simd_test(enable = "avx512cd,avx512vl")]
1028 unsafe fn test_mm256_maskz_conflict_epi64() {
1029 let a = _mm256_set1_epi64x(1);
1030 let r = _mm256_maskz_conflict_epi64(0, a);
1031 assert_eq_m256i(r, _mm256_setzero_si256());
1032 let r = _mm256_maskz_conflict_epi64(0b00001111, a);
1033 let e = _mm256_set_epi64x(1 << 2 | 1 << 1 | 1 << 0, 1 << 1 | 1 << 0, 1 << 0, 0);
1034 assert_eq_m256i(r, e);
1035 }
1036
1037 #[simd_test(enable = "avx512cd,avx512vl")]
1038 unsafe fn test_mm_conflict_epi64() {
1039 let a = _mm_set1_epi64x(1);
1040 let r = _mm_conflict_epi64(a);
1041 let e = _mm_set_epi64x(1 << 0, 0);
1042 assert_eq_m128i(r, e);
1043 }
1044
1045 #[simd_test(enable = "avx512cd,avx512vl")]
1046 unsafe fn test_mm_mask_conflict_epi64() {
1047 let a = _mm_set1_epi64x(1);
1048 let r = _mm_mask_conflict_epi64(a, 0, a);
1049 assert_eq_m128i(r, a);
1050 let r = _mm_mask_conflict_epi64(a, 0b00000011, a);
1051 let e = _mm_set_epi64x(1 << 0, 0);
1052 assert_eq_m128i(r, e);
1053 }
1054
1055 #[simd_test(enable = "avx512cd,avx512vl")]
1056 unsafe fn test_mm_maskz_conflict_epi64() {
1057 let a = _mm_set1_epi64x(1);
1058 let r = _mm_maskz_conflict_epi64(0, a);
1059 assert_eq_m128i(r, _mm_setzero_si128());
1060 let r = _mm_maskz_conflict_epi64(0b00000011, a);
1061 let e = _mm_set_epi64x(1 << 0, 0);
1062 assert_eq_m128i(r, e);
1063 }
1064
1065 #[simd_test(enable = "avx512cd")]
1066 unsafe fn test_mm512_lzcnt_epi32() {
1067 let a = _mm512_set1_epi32(1);
1068 let r = _mm512_lzcnt_epi32(a);
1069 let e = _mm512_set1_epi32(31);
1070 assert_eq_m512i(r, e);
1071 }
1072
1073 #[simd_test(enable = "avx512cd")]
1074 unsafe fn test_mm512_mask_lzcnt_epi32() {
1075 let a = _mm512_set1_epi32(1);
1076 let r = _mm512_mask_lzcnt_epi32(a, 0, a);
1077 assert_eq_m512i(r, a);
1078 let r = _mm512_mask_lzcnt_epi32(a, 0b11111111_11111111, a);
1079 let e = _mm512_set1_epi32(31);
1080 assert_eq_m512i(r, e);
1081 }
1082
1083 #[simd_test(enable = "avx512cd")]
1084 unsafe fn test_mm512_maskz_lzcnt_epi32() {
1085 let a = _mm512_set1_epi32(2);
1086 let r = _mm512_maskz_lzcnt_epi32(0, a);
1087 assert_eq_m512i(r, _mm512_setzero_si512());
1088 let r = _mm512_maskz_lzcnt_epi32(0b11111111_11111111, a);
1089 let e = _mm512_set1_epi32(30);
1090 assert_eq_m512i(r, e);
1091 }
1092
1093 #[simd_test(enable = "avx512cd,avx512vl")]
1094 unsafe fn test_mm256_lzcnt_epi32() {
1095 let a = _mm256_set1_epi32(1);
1096 let r = _mm256_lzcnt_epi32(a);
1097 let e = _mm256_set1_epi32(31);
1098 assert_eq_m256i(r, e);
1099 }
1100
1101 #[simd_test(enable = "avx512cd,avx512vl")]
1102 unsafe fn test_mm256_mask_lzcnt_epi32() {
1103 let a = _mm256_set1_epi32(1);
1104 let r = _mm256_mask_lzcnt_epi32(a, 0, a);
1105 assert_eq_m256i(r, a);
1106 let r = _mm256_mask_lzcnt_epi32(a, 0b11111111, a);
1107 let e = _mm256_set1_epi32(31);
1108 assert_eq_m256i(r, e);
1109 }
1110
1111 #[simd_test(enable = "avx512cd,avx512vl")]
1112 unsafe fn test_mm256_maskz_lzcnt_epi32() {
1113 let a = _mm256_set1_epi32(1);
1114 let r = _mm256_maskz_lzcnt_epi32(0, a);
1115 assert_eq_m256i(r, _mm256_setzero_si256());
1116 let r = _mm256_maskz_lzcnt_epi32(0b11111111, a);
1117 let e = _mm256_set1_epi32(31);
1118 assert_eq_m256i(r, e);
1119 }
1120
1121 #[simd_test(enable = "avx512cd,avx512vl")]
1122 unsafe fn test_mm_lzcnt_epi32() {
1123 let a = _mm_set1_epi32(1);
1124 let r = _mm_lzcnt_epi32(a);
1125 let e = _mm_set1_epi32(31);
1126 assert_eq_m128i(r, e);
1127 }
1128
1129 #[simd_test(enable = "avx512cd,avx512vl")]
1130 unsafe fn test_mm_mask_lzcnt_epi32() {
1131 let a = _mm_set1_epi32(1);
1132 let r = _mm_mask_lzcnt_epi32(a, 0, a);
1133 assert_eq_m128i(r, a);
1134 let r = _mm_mask_lzcnt_epi32(a, 0b00001111, a);
1135 let e = _mm_set1_epi32(31);
1136 assert_eq_m128i(r, e);
1137 }
1138
1139 #[simd_test(enable = "avx512cd,avx512vl")]
1140 unsafe fn test_mm_maskz_lzcnt_epi32() {
1141 let a = _mm_set1_epi32(1);
1142 let r = _mm_maskz_lzcnt_epi32(0, a);
1143 assert_eq_m128i(r, _mm_setzero_si128());
1144 let r = _mm_maskz_lzcnt_epi32(0b00001111, a);
1145 let e = _mm_set1_epi32(31);
1146 assert_eq_m128i(r, e);
1147 }
1148
1149 #[simd_test(enable = "avx512cd")]
1150 unsafe fn test_mm512_lzcnt_epi64() {
1151 let a = _mm512_set1_epi64(1);
1152 let r = _mm512_lzcnt_epi64(a);
1153 let e = _mm512_set1_epi64(63);
1154 assert_eq_m512i(r, e);
1155 }
1156
1157 #[simd_test(enable = "avx512cd")]
1158 unsafe fn test_mm512_mask_lzcnt_epi64() {
1159 let a = _mm512_set1_epi64(1);
1160 let r = _mm512_mask_lzcnt_epi64(a, 0, a);
1161 assert_eq_m512i(r, a);
1162 let r = _mm512_mask_lzcnt_epi64(a, 0b11111111, a);
1163 let e = _mm512_set1_epi64(63);
1164 assert_eq_m512i(r, e);
1165 }
1166
1167 #[simd_test(enable = "avx512cd")]
1168 unsafe fn test_mm512_maskz_lzcnt_epi64() {
1169 let a = _mm512_set1_epi64(2);
1170 let r = _mm512_maskz_lzcnt_epi64(0, a);
1171 assert_eq_m512i(r, _mm512_setzero_si512());
1172 let r = _mm512_maskz_lzcnt_epi64(0b11111111, a);
1173 let e = _mm512_set1_epi64(62);
1174 assert_eq_m512i(r, e);
1175 }
1176
1177 #[simd_test(enable = "avx512cd,avx512vl")]
1178 unsafe fn test_mm256_lzcnt_epi64() {
1179 let a = _mm256_set1_epi64x(1);
1180 let r = _mm256_lzcnt_epi64(a);
1181 let e = _mm256_set1_epi64x(63);
1182 assert_eq_m256i(r, e);
1183 }
1184
1185 #[simd_test(enable = "avx512cd,avx512vl")]
1186 unsafe fn test_mm256_mask_lzcnt_epi64() {
1187 let a = _mm256_set1_epi64x(1);
1188 let r = _mm256_mask_lzcnt_epi64(a, 0, a);
1189 assert_eq_m256i(r, a);
1190 let r = _mm256_mask_lzcnt_epi64(a, 0b00001111, a);
1191 let e = _mm256_set1_epi64x(63);
1192 assert_eq_m256i(r, e);
1193 }
1194
1195 #[simd_test(enable = "avx512cd,avx512vl")]
1196 unsafe fn test_mm256_maskz_lzcnt_epi64() {
1197 let a = _mm256_set1_epi64x(1);
1198 let r = _mm256_maskz_lzcnt_epi64(0, a);
1199 assert_eq_m256i(r, _mm256_setzero_si256());
1200 let r = _mm256_maskz_lzcnt_epi64(0b00001111, a);
1201 let e = _mm256_set1_epi64x(63);
1202 assert_eq_m256i(r, e);
1203 }
1204
1205 #[simd_test(enable = "avx512cd,avx512vl")]
1206 unsafe fn test_mm_lzcnt_epi64() {
1207 let a = _mm_set1_epi64x(1);
1208 let r = _mm_lzcnt_epi64(a);
1209 let e = _mm_set1_epi64x(63);
1210 assert_eq_m128i(r, e);
1211 }
1212
1213 #[simd_test(enable = "avx512cd,avx512vl")]
1214 unsafe fn test_mm_mask_lzcnt_epi64() {
1215 let a = _mm_set1_epi64x(1);
1216 let r = _mm_mask_lzcnt_epi64(a, 0, a);
1217 assert_eq_m128i(r, a);
1218 let r = _mm_mask_lzcnt_epi64(a, 0b00001111, a);
1219 let e = _mm_set1_epi64x(63);
1220 assert_eq_m128i(r, e);
1221 }
1222
1223 #[simd_test(enable = "avx512cd,avx512vl")]
1224 unsafe fn test_mm_maskz_lzcnt_epi64() {
1225 let a = _mm_set1_epi64x(1);
1226 let r = _mm_maskz_lzcnt_epi64(0, a);
1227 assert_eq_m128i(r, _mm_setzero_si128());
1228 let r = _mm_maskz_lzcnt_epi64(0b00001111, a);
1229 let e = _mm_set1_epi64x(63);
1230 assert_eq_m128i(r, e);
1231 }
1232}