(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr106010-5a.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx -ftree-vectorize -fvect-cost-model=unlimited -fdump-tree-slp-details -mprefer-vector-width=256" } */
       3  /* { dg-final { scan-tree-dump-times "basic block part vectorized using (?:32|64) byte vectors" 6 "slp2" } }*/
       4  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(4\) double>} 4 "slp2" } } */
       5  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(8\) float>} 4 "slp2" } } */
       6  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(4\) long long int>} 4 "slp2" } } */
       7  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(8\) int>} 4 "slp2" } } */
       8  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(16\) short int>} 4 "slp2" } } */
       9  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(32\) char>} 4 "slp2" } } */
      10  
      11  void
      12  __attribute__((noipa))
      13  foo_pd (_Complex double* a, _Complex double* __restrict b)
      14  {
      15    a[0] = b[2];
      16    a[1] = b[3];
      17    a[2] = b[0];
      18    a[3] = b[1];
      19  }
      20  
      21  void
      22  __attribute__((noipa))
      23  foo_ps (_Complex float* a, _Complex float* __restrict b)
      24  {
      25    a[0] = b[4];
      26    a[1] = b[5];
      27    a[2] = b[6];
      28    a[3] = b[7];
      29    a[4] = b[0];
      30    a[5] = b[1];
      31    a[6] = b[2];
      32    a[7] = b[3];
      33  }
      34  
      35  void
      36  __attribute__((noipa))
      37  foo_epi64 (_Complex long long* a, _Complex long long* __restrict b)
      38  {
      39    a[0] = b[2];
      40    a[1] = b[3];
      41    a[2] = b[0];
      42    a[3] = b[1];
      43  }
      44  
      45  void
      46  __attribute__((noipa))
      47  foo_epi32 (_Complex int* a, _Complex int* __restrict b)
      48  {
      49    a[0] = b[4];
      50    a[1] = b[5];
      51    a[2] = b[6];
      52    a[3] = b[7];
      53    a[4] = b[0];
      54    a[5] = b[1];
      55    a[6] = b[2];
      56    a[7] = b[3];
      57  }
      58  
      59  void
      60  __attribute__((noipa))
      61  foo_epi16 (_Complex short* a, _Complex short* __restrict b)
      62  {
      63    a[0] = b[8];
      64    a[1] = b[9];
      65    a[2] = b[10];
      66    a[3] = b[11];
      67    a[4] = b[12];
      68    a[5] = b[13];
      69    a[6] = b[14];
      70    a[7] = b[15];
      71    a[8] = b[0];
      72    a[9] = b[1];
      73    a[10] = b[2];
      74    a[11] = b[3];
      75    a[12] = b[4];
      76    a[13] = b[5];
      77    a[14] = b[6];
      78    a[15] = b[7];
      79  }
      80  
      81  void
      82  __attribute__((noipa))
      83  foo_epi8 (_Complex char* a, _Complex char* __restrict b)
      84  {
      85    a[0] = b[16];
      86    a[1] = b[17];
      87    a[2] = b[18];
      88    a[3] = b[19];
      89    a[4] = b[20];
      90    a[5] = b[21];
      91    a[6] = b[22];
      92    a[7] = b[23];
      93    a[8] = b[24];
      94    a[9] = b[25];
      95    a[10] = b[26];
      96    a[11] = b[27];
      97    a[12] = b[28];
      98    a[13] = b[29];
      99    a[14] = b[30];
     100    a[15] = b[31];
     101    a[16] = b[0];
     102    a[17] = b[1];
     103    a[18] = b[2];
     104    a[19] = b[3];
     105    a[20] = b[4];
     106    a[21] = b[5];
     107    a[22] = b[6];
     108    a[23] = b[7];
     109    a[24] = b[8];
     110    a[25] = b[9];
     111    a[26] = b[10];
     112    a[27] = b[11];
     113    a[28] = b[12];
     114    a[29] = b[13];
     115    a[30] = b[14];
     116    a[31] = b[15];
     117  }