(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx2-shiftqihi-constant-2.c
       1  /* PR target/95524 */
       2  /* { dg-do run } */
       3  /* { dg-options "-O2 -mavx512bw -Wno-shift-count-overflow" } */
       4  
       5  #ifndef CHECK
       6  #define CHECK "avx512bw-check.h"
       7  #endif
       8  
       9  #include CHECK
      10  
      11  #ifndef TEST
      12  #define TEST avx512bw_test
      13  #endif
      14  
      15  typedef char v64qi  __attribute__ ((vector_size (64)));
      16  typedef unsigned char v64uqi  __attribute__ ((vector_size (64)));
      17  
      18  #define TEST_SHIFT(N)					\
      19    do							\
      20      {							\
      21        int i;						\
      22        for (i = 0; i < 64; i++)				\
      23  	exp1.a[i] = op1.a[i] << N;			\
      24        res1.x = (__m512i) (((v64qi) op1.x) << N);	\
      25        if (check_union512i_b (res1, exp1.a))		\
      26  	abort ();					\
      27  							\
      28        for (i = 0; i < 64; i++)				\
      29  	exp1.a[i] = op1.a[i] >> N;			\
      30        res1.x = (__m512i) (((v64qi) op1.x) >> N);	\
      31        if (check_union512i_b (res1, exp1.a))		\
      32  	abort ();					\
      33  							\
      34        for (i = 0; i < 64; i++)				\
      35  	exp2.a[i] = op2.a[i] >> N;			\
      36        res2.x = (__m512i) (((v64uqi) op2.x >> N));	\
      37        if (check_union512i_ub (res2, exp2.a))		\
      38  	abort ();					\
      39      }							\
      40    while (0)
      41  
      42  static void
      43  TEST (void)
      44  {
      45    union512i_b op1, exp1, res1;
      46    union512i_ub op2, exp2, res2;
      47    for (int i = 0; i != 64; i++)
      48      {
      49        op2.a[i] = i * i;
      50        op1.a[i] = i * i + 200 * i;
      51      }
      52    TEST_SHIFT (0);
      53    TEST_SHIFT (1);
      54    TEST_SHIFT (2);
      55    TEST_SHIFT (3);
      56    TEST_SHIFT (4);
      57    TEST_SHIFT (5);
      58    TEST_SHIFT (6);
      59    TEST_SHIFT (7);
      60    TEST_SHIFT (8);
      61  }
      62