(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr106010-3a.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx2 -ftree-vectorize -fvect-cost-model=unlimited -fdump-tree-slp-details" } */
       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:.*VEC_PERM_EXPR.*\{ 2, 3, 0, 1 \}} 2 "slp2" } }  */
       5  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*VEC_PERM_EXPR.*\{ 6, 7, 4, 5, 2, 3, 0, 1 \}} 1 "slp2" } }  */
       6  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*VEC_PERM_EXPR.*\{ 2, 3, 0, 1, 6, 7, 4, 5 \}} 1 "slp2" } }  */
       7  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*VEC_PERM_EXPR.*\{ 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1 \}} 1 "slp2" } }  */
       8  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*VEC_PERM_EXPR.*\{ 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, 30, 31, 28, 29, 26, 27, 24, 25, 22, 23, 20, 21, 18, 19, 16, 17 \}} 1 "slp2" } }  */
       9  
      10  void
      11  __attribute__((noipa))
      12  foo_pd (_Complex double* a, _Complex double* __restrict b)
      13  {
      14    a[0] = b[1];
      15    a[1] = b[0];
      16  }
      17  
      18  void
      19  __attribute__((noipa))
      20  foo_ps (_Complex float* a, _Complex float* __restrict b)
      21  {
      22    a[0] = b[1];
      23    a[1] = b[0];
      24    a[2] = b[3];
      25    a[3] = b[2];
      26  }
      27  
      28  void
      29  __attribute__((noipa))
      30  foo_epi64 (_Complex long long* a, _Complex long long* __restrict b)
      31  {
      32    a[0] = b[1];
      33    a[1] = b[0];
      34  }
      35  
      36  void
      37  __attribute__((noipa))
      38  foo_epi32 (_Complex int* a, _Complex int* __restrict b)
      39  {
      40    a[0] = b[3];
      41    a[1] = b[2];
      42    a[2] = b[1];
      43    a[3] = b[0];
      44  }
      45  
      46  void
      47  __attribute__((noipa))
      48  foo_epi16 (_Complex short* a, _Complex short* __restrict b)
      49  {
      50    a[0] = b[7];
      51    a[1] = b[6];
      52    a[2] = b[5];
      53    a[3] = b[4];
      54    a[4] = b[3];
      55    a[5] = b[2];
      56    a[6] = b[1];
      57    a[7] = b[0];
      58  }
      59  
      60  void
      61  __attribute__((noipa))
      62  foo_epi8 (_Complex char* a, _Complex char* __restrict b)
      63  {
      64    a[0] = b[7];
      65    a[1] = b[6];
      66    a[2] = b[5];
      67    a[3] = b[4];
      68    a[4] = b[3];
      69    a[5] = b[2];
      70    a[6] = b[1];
      71    a[7] = b[0];
      72    a[8] = b[15];
      73    a[9] = b[14];
      74    a[10] = b[13];
      75    a[11] = b[12];
      76    a[12] = b[11];
      77    a[13] = b[10];
      78    a[14] = b[9];
      79    a[15] = b[8];
      80  }