/* { dg-do run } */
/* { dg-options "-mavx512f -O2" } */
/* { dg-require-effective-target avx512f } */

#include "avx512f-check.h"

void
avx512f_test (void)
{
  __mmask16 dst, src1, src2, dst_ref;
  volatile __m512 x = _mm512_setzero_ps(); 

  __asm__( "kmovw %1, %0" : "=k" (src1) : "r" (0x0FFF) );
  __asm__( "kmovw %1, %0" : "=k" (src2) : "r" (0x0F0F) );

  dst = _mm512_kand (src1, src2);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = src1 & src2;
  if (dst != dst_ref)
    abort ();

  dst = _mm512_kandn (src1, src2);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = ~src1 & src2;
  if (dst != dst_ref)
    abort ();

  dst = _mm512_kor (src1, src2);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = src1 | src2;
  if (dst != dst_ref)
    abort ();

  dst = _mm512_kxnor (src1, src2);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = ~(src1 ^ src2);
  if (dst != dst_ref)
    abort ();

  dst = _mm512_kxor (src1, src2);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = src1 ^ src2;
  if (dst != dst_ref)
    abort ();

  dst = _mm512_knot (src1);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = ~src1;
  if (dst != dst_ref)
    abort ();

  dst = _mm512_kunpackb (src1, src2);
  x = _mm512_mask_add_ps (x, dst, x, x);
  dst_ref = ((src1 << 8) | src2) & 0xFFFF;

  if (dst != dst_ref)
    abort ();
}
