(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-reduc-mul_1.c
       1  /* { dg-require-effective-target vect_int_mult } */
       2  /* { dg-require-effective-target whole_vector_shift } */
       3  
       4  /* Write a reduction loop to be reduced using vector shifts.  */
       5  
       6  #include "tree-vect.h"
       7  
       8  extern void abort(void);
       9  
      10  unsigned char in[16];
      11  
      12  int
      13  main (unsigned char argc, char **argv)
      14  {
      15    unsigned char i = 0;
      16    unsigned char sum = 1;
      17  
      18    check_vect ();
      19  
      20    for (i = 0; i < 16; i++)
      21      in[i] = i + i + 1;
      22  
      23    /* Prevent constant propagation of the entire loop below.  */
      24    asm volatile ("" : : : "memory");
      25  
      26    for (i = 0; i < 16; i++)
      27      sum *= in[i];
      28  
      29    if (sum != 33)
      30      {
      31        __builtin_printf("Failed %d\n", sum);
      32        abort();
      33      }
      34  
      35    return 0;
      36  }
      37  
      38  /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */
      39