(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-mult-const-pattern-1.c
       1  /* { dg-require-effective-target vect_int } */
       2  /* { dg-require-effective-target vect_shift } */
       3  
       4  #include <stdarg.h>
       5  #include "tree-vect.h"
       6  
       7  #define N 256
       8  
       9  __attribute__ ((noinline)) void
      10  foo (long long *arr)
      11  {
      12    for (int i = 0; i < N; i++)
      13      arr[i] *= 123;
      14  }
      15  
      16  int
      17  main (void)
      18  {
      19    check_vect ();
      20    long long data[N];
      21    int i;
      22  
      23    for (i = 0; i < N; i++)
      24      {
      25        data[i] = i;
      26        __asm__ volatile ("");
      27      }
      28  
      29    foo (data);
      30    for (i = 0; i < N; i++)
      31      {
      32        if (data[i] / 123 != i)
      33        __builtin_abort ();
      34        __asm__ volatile ("");
      35      }
      36  
      37    return 0;
      38  }
      39  
      40  /* { dg-final { scan-tree-dump {vect_recog_mult_pattern: detected:[^\n]* \* 123} "vect" { target aarch64*-*-* xfail aarch64_sve } } } */
      41  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target aarch64*-*-* } } } */