1 /* { dg-do compile } */
2 /* { dg-options "-O2 -mavx512fp16 -mavx512vl" } */
3 /* { dg-final { scan-assembler-times "vpternlog" 5 } } */
4 /* { dg-final { scan-assembler-not "vpxor" } } */
5 /* { dg-final { scan-assembler-not "vpor" } } */
6 /* { dg-final { scan-assembler-not "vpand" } } */
7 
8 #include<immintrin.h>
9 
10 extern __m256i src1, src2, src3;
11 
12 __m256i
foo(void)13 foo (void)
14 {
15   return (src2 & ~src1) | (src3 & src1);
16 }
17 
18 __m256i
foo1(void)19 foo1 (void)
20 {
21   return (src2 & src1) | (src3 & ~src1);
22 }
23 
24 __m256i
foo2(void)25 foo2 (void)
26 {
27   return (src2 & src1) | (~src3 & src1);
28 }
29 
30 __m256i
foo3(void)31 foo3 (void)
32 {
33   return (~src2 & src1) | (src3 & src1);
34 }
35 
36 __m256i
foo4(void)37 foo4 (void)
38 {
39   return src3 & src2 ^ src1;
40 }
41