1 /* { dg-do compile } */
2 /* { dg-options "-mavx512vl -mavx512bw -mavx512dq -O2 -masm=att" } */
3 /* { dg-final { scan-assembler-not {not[bwlqd]\]} } } */
4 /* { dg-final { scan-assembler-times {(?n)vpcmp[bwdq][ \t]*\$5} 4} } */
5 /* { dg-final { scan-assembler-times {(?n)vpcmp[bwdq][ \t]*\$6} 4} } */
6 /* { dg-final { scan-assembler-times {(?n)vpcmp[bwdq][ \t]*\$7} 4} } */
7 /* { dg-final { scan-assembler-times {(?n)vcmpp[sd][ \t]*\$5} 2} } */
8 /* { dg-final { scan-assembler-times {(?n)vcmpp[sd][ \t]*\$6} 2} } */
9 /* { dg-final { scan-assembler-times {(?n)vcmpp[sd][ \t]*\$7} 2} } */
13 #define FOO(VTYPE,PREFIX,SUFFIX,MASK,LEN,CMPIMM) \
15 foo_##LEN##_##SUFFIX##_##CMPIMM (VTYPE a, VTYPE b) \
17 MASK m = _mm##PREFIX##_cmp_##SUFFIX##_mask (a, b, CMPIMM); \
21 FOO (__m128i,, epi8, __mmask16, 128, 1);
22 FOO (__m128i
,, epi16
, __mmask8
, 128, 1);
23 FOO (__m128i
,, epi32
, __mmask8
, 128, 1);
24 FOO (__m128i
,, epi64
, __mmask8
, 128, 1);
25 FOO (__m256i
, 256, epi8
, __mmask32
, 256, 2);
26 FOO (__m256i
, 256, epi16
, __mmask16
, 256, 2);
27 FOO (__m256i
, 256, epi32
, __mmask8
, 256, 2);
28 FOO (__m256i
, 256, epi64
, __mmask8
, 256, 2);
29 FOO (__m512i
, 512, epi8
, __mmask64
, 512, 3);
30 FOO (__m512i
, 512, epi16
, __mmask32
, 512, 3);
31 FOO (__m512i
, 512, epi32
, __mmask16
, 512, 3);
32 FOO (__m512i
, 512, epi64
, __mmask8
, 512, 3);
34 FOO (__m128
,, ps
, __mmask8
, 128, 1);
35 FOO (__m128d
,, pd
, __mmask8
, 128, 1);
36 FOO (__m256
, 256, ps
, __mmask8
, 256, 2);
37 FOO (__m256d
, 256, pd
, __mmask8
, 256, 2);
38 FOO (__m512
, 512, ps
, __mmask16
, 512, 3);
39 FOO (__m512d
, 512, pd
, __mmask8
, 512, 3);