(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-widen-mult-const-s16.c
       1  /* Disabling epilogues until we find a better way to deal with scans.  */
       2  /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
       3  /* { dg-require-effective-target vect_int } */
       4  /* { dg-additional-options "-fno-ipa-icf" } */
       5  
       6  #include "tree-vect.h"
       7  
       8  #define N 32
       9  
      10  __attribute__ ((noinline)) void 
      11  foo (int *__restrict a,
      12       short *__restrict b,
      13       int n)
      14  {
      15    int i;
      16  
      17    for (i = 0; i < n; i++)
      18      a[i] = b[i] * 2333;
      19  
      20    for (i = 0; i < n; i++)
      21      if (a[i] != b[i] * 2333)
      22        abort ();
      23  }
      24  
      25  __attribute__ ((noinline)) void
      26  bar (int *__restrict a,
      27       short *__restrict b,
      28       int n)
      29  {
      30    int i;
      31  
      32    for (i = 0; i < n; i++)
      33      a[i] = b[i] * (short) 2333;
      34  
      35    for (i = 0; i < n; i++)
      36      if (a[i] != b[i] * (short) 2333)
      37        abort ();
      38  }
      39  
      40  int main (void)
      41  {
      42    int i;
      43    int a[N];
      44    short b[N];
      45  
      46    check_vect ();
      47  
      48    for (i = 0; i < N; i++)
      49      {
      50        a[i] = 0;
      51        b[i] = i;
      52        __asm__ volatile ("");
      53      }
      54  
      55    foo (a, b, N);
      56    bar (a, b, N);
      57    return 0;
      58  }
      59  
      60  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
      61  /* { dg-final { scan-tree-dump-times {vect_recog_widen_mult_pattern: detected:[^\n]* 2333} 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
      62  /* { dg-final { scan-tree-dump-times {widen_mult pattern recognized:[^\n]* 2333} 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
      63