1 /* PR target/93696 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -mavx512bitalg -mavx512vpopcntdq -mavx512vl -mavx512bw -masm=att" } */
4 /* { dg-final { scan-assembler-times "vpopcnt\[bwdq]\t%\[xyz]mm1, %\[xyz]mm0\{%k\[0-7]\}\[^\{]" 12 } } */
5 /* { dg-final { scan-assembler-not "vmovdq\[au]\[0-9]" } } */
6 
7 #include <x86intrin.h>
8 
9 __m128i
f1(__m128i x,__mmask8 m,__m128i y)10 f1 (__m128i x, __mmask8 m, __m128i y)
11 {
12   return _mm_mask_popcnt_epi64 (x, m, y);
13 }
14 
15 __m128i
f2(__m128i x,__mmask8 m,__m128i y)16 f2 (__m128i x, __mmask8 m, __m128i y)
17 {
18   return _mm_mask_popcnt_epi32 (x, m, y);
19 }
20 
21 __m128i
f3(__m128i x,__mmask8 m,__m128i y)22 f3 (__m128i x, __mmask8 m, __m128i y)
23 {
24   return _mm_mask_popcnt_epi16 (x, m, y);
25 }
26 
27 __m128i
f4(__m128i x,__mmask16 m,__m128i y)28 f4 (__m128i x, __mmask16 m, __m128i y)
29 {
30   return _mm_mask_popcnt_epi8 (x, m, y);
31 }
32 
33 __m256i
f5(__m256i x,__mmask8 m,__m256i y)34 f5 (__m256i x, __mmask8 m, __m256i y)
35 {
36   return _mm256_mask_popcnt_epi64 (x, m, y);
37 }
38 
39 __m256i
f6(__m256i x,__mmask8 m,__m256i y)40 f6 (__m256i x, __mmask8 m, __m256i y)
41 {
42   return _mm256_mask_popcnt_epi32 (x, m, y);
43 }
44 
45 __m256i
f7(__m256i x,__mmask16 m,__m256i y)46 f7 (__m256i x, __mmask16 m, __m256i y)
47 {
48   return _mm256_mask_popcnt_epi16 (x, m, y);
49 }
50 
51 __m256i
f8(__m256i x,__mmask32 m,__m256i y)52 f8 (__m256i x, __mmask32 m, __m256i y)
53 {
54   return _mm256_mask_popcnt_epi8 (x, m, y);
55 }
56 
57 __m512i
f9(__m512i x,__mmask8 m,__m512i y)58 f9 (__m512i x, __mmask8 m, __m512i y)
59 {
60   return _mm512_mask_popcnt_epi64 (x, m, y);
61 }
62 
63 __m512i
f10(__m512i x,__mmask16 m,__m512i y)64 f10 (__m512i x, __mmask16 m, __m512i y)
65 {
66   return _mm512_mask_popcnt_epi32 (x, m, y);
67 }
68 
69 __m512i
f11(__m512i x,__mmask32 m,__m512i y)70 f11 (__m512i x, __mmask32 m, __m512i y)
71 {
72   return _mm512_mask_popcnt_epi16 (x, m, y);
73 }
74 
75 __m512i
f12(__m512i x,__mmask64 m,__m512i y)76 f12 (__m512i x, __mmask64 m, __m512i y)
77 {
78   return _mm512_mask_popcnt_epi8 (x, m, y);
79 }
80