2 /* { dg-options "-mavx512f -O2" } */
3 /* { dg-require-effective-target avx512f } */
5 #include "avx512f-check.h"
10 __mmask16 dst
, src1
, src2
, dst_ref
;
11 volatile __m512 x
= _mm512_setzero_ps();
13 __asm__( "kmovw %1, %0" : "=k" (src1
) : "r" (0x0FFF) );
14 __asm__( "kmovw %1, %0" : "=k" (src2
) : "r" (0x0F0F) );
16 dst
= _mm512_kand (src1
, src2
);
17 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
18 dst_ref
= src1
& src2
;
22 dst
= _mm512_kandn (src1
, src2
);
23 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
24 dst_ref
= ~src1
& src2
;
28 dst
= _mm512_kor (src1
, src2
);
29 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
30 dst_ref
= src1
| src2
;
34 dst
= _mm512_kxnor (src1
, src2
);
35 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
36 dst_ref
= ~(src1
^ src2
);
40 dst
= _mm512_kxor (src1
, src2
);
41 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
42 dst_ref
= src1
^ src2
;
46 dst
= _mm512_knot (src1
);
47 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
52 dst
= _mm512_kunpackb (src1
, src2
);
53 x
= _mm512_mask_add_ps (x
, dst
, x
, x
);
54 dst_ref
= ((src1
<< 8) | src2
) & 0xFFFF;