(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512f-klogic-2.c
       1  /* { dg-do run } */
       2  /* { dg-options "-mavx512f -O2" } */
       3  /* { dg-require-effective-target avx512f } */
       4  
       5  #include "avx512f-check.h"
       6  
       7  void
       8  avx512f_test (void)
       9  {
      10    __mmask16 dst, src1, src2, dst_ref;
      11    volatile __m512 x = _mm512_setzero_ps(); 
      12  
      13    __asm__( "kmovw %1, %0" : "=k" (src1) : "r" (0x0FFF) );
      14    __asm__( "kmovw %1, %0" : "=k" (src2) : "r" (0x0F0F) );
      15  
      16    dst = _mm512_kand (src1, src2);
      17    x = _mm512_mask_add_ps (x, dst, x, x);
      18    dst_ref = src1 & src2;
      19    if (dst != dst_ref)
      20      abort ();
      21  
      22    dst = _mm512_kandn (src1, src2);
      23    x = _mm512_mask_add_ps (x, dst, x, x);
      24    dst_ref = ~src1 & src2;
      25    if (dst != dst_ref)
      26      abort ();
      27  
      28    dst = _mm512_kor (src1, src2);
      29    x = _mm512_mask_add_ps (x, dst, x, x);
      30    dst_ref = src1 | src2;
      31    if (dst != dst_ref)
      32      abort ();
      33  
      34    dst = _mm512_kxnor (src1, src2);
      35    x = _mm512_mask_add_ps (x, dst, x, x);
      36    dst_ref = ~(src1 ^ src2);
      37    if (dst != dst_ref)
      38      abort ();
      39  
      40    dst = _mm512_kxor (src1, src2);
      41    x = _mm512_mask_add_ps (x, dst, x, x);
      42    dst_ref = src1 ^ src2;
      43    if (dst != dst_ref)
      44      abort ();
      45  
      46    dst = _mm512_knot (src1);
      47    x = _mm512_mask_add_ps (x, dst, x, x);
      48    dst_ref = ~src1;
      49    if (dst != dst_ref)
      50      abort ();
      51  
      52    dst = _mm512_kunpackb (src1, src2);
      53    x = _mm512_mask_add_ps (x, dst, x, x);
      54    dst_ref = ((src1 << 8) | src2) & 0xFFFF;
      55  
      56    if (dst != dst_ref)
      57      abort ();
      58  }