(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512bw-pr95488-2.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target avx512bw } */
       3  /* { dg-options "-O2 -mavx512bw -mavx512vl" } */
       4  
       5  #ifndef CHECK
       6  #define CHECK "avx512f-helper.h"
       7  #endif
       8  
       9  #include CHECK
      10  
      11  #ifndef TEST
      12  #define TEST avx512bw_test
      13  #endif
      14  
      15  #include "avx512bw-pr95488-1.c"
      16  
      17  #define TEST_MULB(typeV, typeS, N, fn)		\
      18  do						\
      19    {						\
      20      typeV v1, v2, res;				\
      21      typeS s1[N], s2[N], exp[N];		\
      22      int i,j;					\
      23  						\
      24      for (i = 0; i < N; i++)			\
      25        {					\
      26  	s1[i] = i * i;				\
      27  	s2[i] = i + 20;			\
      28        }					\
      29      for (i = 0; i < N; i++)			\
      30        exp[i] = s1[i] * s2[i];			\
      31      v1 = *(typeV *)&s1[0];			\
      32      v2 = *(typeV *)&s2[0];			\
      33      res = fn (v1, v2);				\
      34      for (j = 0; j < N; j++)			\
      35        {					\
      36  	if (res[j] != exp[j])			\
      37  	  abort();				\
      38        }					\
      39  }						\
      40  while (0)
      41  
      42  static void
      43  TEST (void)
      44  {
      45    TEST_MULB (v32qi, char, 32, mul_512);
      46    TEST_MULB (v32uqi, unsigned char, 32, umul_512);
      47  }