(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr91103-2.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -mavx512vl" } */
       3  /* { dg-require-effective-target avx512vl } */
       4  
       5  #define AVX512VL
       6  
       7  #ifndef CHECK
       8  #define CHECK "avx512f-helper.h"
       9  #endif
      10  
      11  #include CHECK
      12  #include "pr91103-1.c"
      13  
      14  #define RUNCHECK(U,V,S,IDX)			\
      15    do						\
      16      {						\
      17        S tmp = foo_##V##_##IDX ((V)U.x);		\
      18        if (tmp != U.a[IDX])			\
      19  	abort();				\
      20      }						\
      21    while (0)
      22  
      23  void
      24  test_256 (void)
      25  {
      26    union512i_d di1;
      27    union256i_d di2;
      28    union512i_q q1;
      29    union256i_q q2;
      30    union512 f1;
      31    union256 f2;
      32    union512d d1;
      33    union256d d2;
      34    int sign = 1;
      35  
      36    int i = 0;
      37    for (i = 0; i < 16; i++)
      38      {
      39        di1.a[i] = 30 * (i - 30) * sign;
      40        f1.a[i] = 56.78 * (i - 30) * sign;
      41        sign = -sign;
      42      }
      43  
      44    for (i = 0; i != 8; i++)
      45      {
      46        di2.a[i] = 15 * (i + 40) * sign;
      47        f2.a[i] = 90.12 * (i + 40) * sign;
      48        q1.a[i] = 15 * (i + 40) * sign;
      49        d1.a[i] = 90.12 * (i + 40) * sign;
      50        sign = -sign;
      51      }
      52  
      53    for (i = 0; i != 4; i++)
      54      {
      55        q2.a[i] = 15 * (i + 40) * sign;
      56        d2.a[i] = 90.12 * (i + 40) * sign;
      57        sign = -sign;
      58      }
      59  
      60  RUNCHECK (f2, v8sf, float, 4);
      61  RUNCHECK (f2, v8sf, float, 7);
      62  RUNCHECK (di2, v8si, int, 4);
      63  RUNCHECK (di2, v8si, int, 7);
      64  RUNCHECK (f1, v16sf, float, 4);
      65  RUNCHECK (f1, v16sf, float, 8);
      66  RUNCHECK (f1, v16sf, float, 12);
      67  RUNCHECK (f1, v16sf, float, 15);
      68  RUNCHECK (di1, v16si, int, 4);
      69  RUNCHECK (di1, v16si, int, 8);
      70  RUNCHECK (di1, v16si, int, 12);
      71  RUNCHECK (di1, v16si, int, 15);
      72  RUNCHECK (d2, v4df, double, 2);
      73  RUNCHECK (d2, v4df, double, 3);
      74  RUNCHECK (q2, v4di, long long, 2);
      75  RUNCHECK (q2, v4di, long long, 3);
      76  RUNCHECK (d1, v8df, double, 4);
      77  RUNCHECK (d1, v8df, double, 7);
      78  RUNCHECK (q1, v8di, long long, 4);
      79  RUNCHECK (q1, v8di, long long, 7);
      80  }
      81  
      82  void
      83  test_128()
      84  {
      85  }