1/* { dg-do run } */ 2/* { dg-options "-O2 -mavx512f" } */ 3/* { dg-require-effective-target avx512f } */ 4 5#include "avx512f-check.h" 6 7void 8avx512f_test () { 9 volatile __mmask16 k1; 10 __mmask16 k2; 11 volatile short r = 0; 12 13 /* Test kortestc. */ 14 __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); 15 __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (45) ); 16 17 r += _mm512_kortestc (k1, k2); 18 19 __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); 20 __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); 21 22 r += _mm512_kortestc (k1, k2); 23 if (r) 24 abort (); 25 26 __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (-1) ); 27 __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); 28 29 r += _mm512_kortestc (k1, k2); 30 if (!r) 31 abort (); 32 33 r = 0; 34 /* Test kortestz. */ 35 __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); 36 __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (45) ); 37 38 r += _mm512_kortestz (k1, k2); 39 40 __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (-1) ); 41 __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); 42 43 r += _mm512_kortestz (k1, k2); 44 if (r) 45 abort (); 46 47 __asm__( "kmovw %1, %0" : "=k" (k1) : "r" (0) ); 48 __asm__( "kmovw %1, %0" : "=k" (k2) : "r" (0) ); 49 50 r += _mm512_kortestz (k1, k2); 51 if (!r) 52 abort (); 53} 54