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
      13  foo (void)
      14  {
      15    return (src2 & ~src1) | (src3 & src1);
      16  }
      17  
      18  __m256i
      19  foo1 (void)
      20  {
      21    return (src2 & src1) | (src3 & ~src1);
      22  }
      23  
      24  __m256i
      25  foo2 (void)
      26  {
      27    return (src2 & src1) | (~src3 & src1);
      28  }
      29  
      30  __m256i
      31  foo3 (void)
      32  {
      33    return (~src2 & src1) | (src3 & src1);
      34  }
      35  
      36  __m256i
      37  foo4 (void)
      38  {
      39    return src3 & src2 ^ src1;
      40  }