(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr51581-4.c
       1  /* PR tree-optimization/51581 */
       2  
       3  #include "tree-vect.h"
       4  
       5  short int a[16], b[16];
       6  unsigned short int c[16], d[16];
       7  
       8  void
       9  f1 (void)
      10  {
      11    a[0] = b[0] / 8;
      12    a[1] = b[1] / 8;
      13    a[2] = b[2] / 8;
      14    a[3] = b[3] / 8;
      15    a[4] = b[4] / 8;
      16    a[5] = b[5] / 8;
      17    a[6] = b[6] / 8;
      18    a[7] = b[7] / 8;
      19    a[8] = b[8] / 8;
      20    a[9] = b[9] / 8;
      21    a[10] = b[10] / 8;
      22    a[11] = b[11] / 8;
      23    a[12] = b[12] / 8;
      24    a[13] = b[13] / 8;
      25    a[14] = b[14] / 8;
      26    a[15] = b[15] / 8;
      27  }
      28  
      29  void
      30  f2 (void)
      31  {
      32    c[0] = d[0] / 3;
      33    c[1] = d[1] / 3;
      34    c[2] = d[2] / 3;
      35    c[3] = d[3] / 3;
      36    c[4] = d[4] / 3;
      37    c[5] = d[5] / 3;
      38    c[6] = d[6] / 3;
      39    c[7] = d[7] / 3;
      40    c[8] = d[8] / 3;
      41    c[9] = d[9] / 3;
      42    c[10] = d[10] / 3;
      43    c[11] = d[11] / 3;
      44    c[12] = d[12] / 3;
      45    c[13] = d[13] / 3;
      46    c[14] = d[14] / 3;
      47    c[15] = d[15] / 3;
      48  }
      49  
      50  void
      51  f3 (void)
      52  {
      53    a[0] = b[0] / 8;
      54    a[1] = b[1] / 4;
      55    a[2] = b[2] / 8;
      56    a[3] = b[3] / 4;
      57    a[4] = b[4] / 8;
      58    a[5] = b[5] / 4;
      59    a[6] = b[6] / 8;
      60    a[7] = b[7] / 4;
      61    a[8] = b[8] / 8;
      62    a[9] = b[9] / 4;
      63    a[10] = b[10] / 8;
      64    a[11] = b[11] / 4;
      65    a[12] = b[12] / 8;
      66    a[13] = b[13] / 4;
      67    a[14] = b[14] / 8;
      68    a[15] = b[15] / 4;
      69  }
      70  
      71  void
      72  f4 (void)
      73  {
      74    c[0] = d[0] / 3;
      75    c[1] = d[1] / 5;
      76    c[2] = d[2] / 3;
      77    c[3] = d[3] / 5;
      78    c[4] = d[4] / 3;
      79    c[5] = d[5] / 5;
      80    c[6] = d[6] / 3;
      81    c[7] = d[7] / 5;
      82    c[8] = d[8] / 3;
      83    c[9] = d[9] / 5;
      84    c[10] = d[10] / 3;
      85    c[11] = d[11] / 5;
      86    c[12] = d[12] / 3;
      87    c[13] = d[13] / 5;
      88    c[14] = d[14] / 3;
      89    c[15] = d[15] / 5;
      90  }
      91  
      92  void
      93  f5 (void)
      94  {
      95    a[0] = b[0] / 14;
      96    a[1] = b[1] / 15;
      97    a[2] = b[2] / 14;
      98    a[3] = b[3] / 15;
      99    a[4] = b[4] / 14;
     100    a[5] = b[5] / 15;
     101    a[6] = b[6] / 14;
     102    a[7] = b[7] / 15;
     103    a[8] = b[8] / 14;
     104    a[9] = b[9] / 15;
     105    a[10] = b[10] / 14;
     106    a[11] = b[11] / 15;
     107    a[12] = b[12] / 14;
     108    a[13] = b[13] / 15;
     109    a[14] = b[14] / 14;
     110    a[15] = b[15] / 15;
     111  }
     112  
     113  void
     114  f6 (void)
     115  {
     116    c[0] = d[0] / 6;
     117    c[1] = d[1] / 5;
     118    c[2] = d[2] / 6;
     119    c[3] = d[3] / 5;
     120    c[4] = d[4] / 6;
     121    c[5] = d[5] / 5;
     122    c[6] = d[6] / 13;
     123    c[7] = d[7] / 5;
     124    c[8] = d[8] / 6;
     125    c[9] = d[9] / 5;
     126    c[10] = d[10] / 6;
     127    c[11] = d[11] / 5;
     128    c[12] = d[12] / 6;
     129    c[13] = d[13] / 5;
     130    c[14] = d[14] / 13;
     131    c[15] = d[15] / 5;
     132  }
     133  
     134  int
     135  main ()
     136  {
     137    int i;
     138    check_vect ();
     139    asm ("");
     140    for (i = 0; i < 16; i++)
     141      {
     142        asm ("");
     143        b[i] = i - 8;
     144        d[i] = i - 8;
     145      }
     146    f1 ();
     147    f2 ();
     148    for (i = 0; i < 16; i++)
     149      if (a[i] != b[i] / 8 || c[i] != d[i] / 3)
     150        abort ();
     151    f3 ();
     152    f4 ();
     153    for (i = 0; i < 16; i+= 2)
     154      if (a[i] != b[i] / 8 || a[i + 1] != b[i + 1] / 4
     155  	|| c[i] != d[i] / 3 || c[i + 1] != d[i + 1] / 5)
     156        abort ();
     157    f5 ();
     158    f6 ();
     159    for (i = 0; i < 16; i+= 2)
     160      if (a[i] != b[i] / 14 || a[i + 1] != b[i + 1] / 15
     161  	|| c[i] != d[i] / ((i & 7) == 6 ? 13 : 6) || c[i + 1] != d[i + 1] / 5)
     162        abort ();
     163    return 0;
     164  }
     165