(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx2-vpabsw256-2.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target avx2 } */
       3  /* { dg-options "-O2 -mavx2" } */
       4  
       5  #include "ssse3-vals.h"
       6  #include "avx2-check.h"
       7  
       8  /* Routine to manually compute the results */
       9  static void
      10  compute_pabs256 (int *i1, short *r)
      11  {
      12    short *b1 = (short *) i1;
      13    int i;
      14  
      15    for (i = 0; i < 16; i++)
      16      if (b1[i] < 0)
      17        r[i] = -b1[i];
      18      else
      19        r[i] = b1[i];
      20  }
      21  
      22  static void
      23  avx2_test (void)
      24  {
      25    int i;
      26    short ck[16];
      27    int fail = 0;
      28  
      29    union256i_w s, d;
      30  
      31    for (i = 0; i < 256 - 7; ++i)
      32      {
      33        /* Using only first 2 bytes of int */
      34        /* Recompute the results for 256-bits */
      35        compute_pabs256 (&vals[i], ck);
      36  
      37        s.x = _mm256_loadu_si256 ((__m256i *) & vals[i]);
      38  
      39        /* Run the 256-bit tests */
      40        d.x = _mm256_abs_epi16 (s.x);
      41  
      42        fail += check_union256i_w (d, ck);
      43      }
      44  
      45    if (fail != 0)
      46      abort ();
      47  }