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