(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
bb-slp-16.c
       1  /* { dg-require-effective-target vect_int } */
       2  /* The SLP vectorization happens as part of the if-converted loop body.  */
       3  /* { dg-additional-options "-fdump-tree-vect-details" } */
       4  
       5  #include <stdarg.h>
       6  #include "tree-vect.h"
       7  
       8  #define N 32 
       9  
      10  unsigned int out[N*8];
      11  unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
      12  unsigned int arr[N] = {0,1,2,3,4,5,6,7};
      13  
      14  __attribute__ ((noinline)) int
      15  main1 (int dummy)
      16  {
      17    int i;
      18    unsigned int *pin = &in[0];
      19    unsigned int *pout = &out[0];
      20    unsigned int a = 0;
      21    
      22    for (i = 0; i < N; i++)
      23      {
      24        *pout++ = *pin++ + a;
      25        *pout++ = *pin++ + a;
      26        *pout++ = *pin++ + a;
      27        *pout++ = *pin++ + a;
      28        *pout++ = *pin++ + a;
      29        *pout++ = *pin++ + a;
      30        *pout++ = *pin++ + a;
      31        *pout++ = *pin++ + a;
      32        if (arr[i] = i)
      33          a = i;
      34        else
      35          a = 2;
      36      }
      37  
      38    a = 0;
      39    /* check results: */ 
      40    for (i = 0; i < N; i++)
      41      {
      42        if (out[i*8] !=  in[i*8] + a
      43           || out[i*8 + 1] != in[i*8 + 1] + a
      44           || out[i*8 + 2] != in[i*8 + 2] + a
      45           || out[i*8 + 3] != in[i*8 + 3] + a
      46           || out[i*8 + 4] != in[i*8 + 4] + a
      47           || out[i*8 + 5] != in[i*8 + 5] + a
      48           || out[i*8 + 6] != in[i*8 + 6] + a
      49           || out[i*8 + 7] != in[i*8 + 7] + a)
      50  	abort ();
      51  
      52        if (arr[i] = i)
      53          a = i;
      54        else
      55          a = 2;
      56      }
      57  
      58    return 0;
      59  }
      60  
      61  int main (void)
      62  {
      63    check_vect ();
      64  
      65    main1 (33);
      66  
      67    return 0;
      68  }
      69  
      70  /* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "vect" } } */