1  /* PR target/85918 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O3 -mavx512dq -mavx512vl -mprefer-vector-width=512 -fno-vect-cost-model -fdump-tree-vect-details" } */
       4  /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 24 "vect" } } */
       5  
       6  #define N 1024
       7  
       8  long long ll[N] __attribute__((aligned (64)));
       9  unsigned long long ull[N] __attribute__((aligned (64)));
      10  float f[N] __attribute__((aligned (64)));
      11  double d[N] __attribute__((aligned (64)));
      12  
      13  void ll2d1 (void)
      14  {
      15    int i;
      16  
      17    for (i = 0; i < 4; i++)
      18      d[i] = ll[i];
      19  }
      20  
      21  void ull2d1 (void)
      22  {
      23    int i;
      24  
      25    for (i = 0; i < 4; i++)
      26      d[i] = ull[i];
      27  }
      28  
      29  void d2ll1 (void)
      30  {
      31    int i;
      32  
      33    for (i = 0; i < 4; i++)
      34      ll[i] = d[i];
      35  }
      36  
      37  void d2ull1 (void)
      38  {
      39    int i;
      40  
      41    for (i = 0; i < 4; i++)
      42      ull[i] = d[i];
      43  }
      44  
      45  void ll2f1 (void)
      46  {
      47    int i;
      48  
      49    for (i = 0; i < 4; i++)
      50      f[i] = ll[i];
      51  }
      52  
      53  void ull2f1 (void)
      54  {
      55    int i;
      56  
      57    for (i = 0; i < 4; i++)
      58      f[i] = ull[i];
      59  }
      60  
      61  void f2ll1 (void)
      62  {
      63    int i;
      64  
      65    for (i = 0; i < 4; i++)
      66      ll[i] = f[i];
      67  }
      68  
      69  void f2ull1 (void)
      70  {
      71    int i;
      72  
      73    for (i = 0; i < 4; i++)
      74      ull[i] = f[i];
      75  }
      76  
      77  void ll2d2 (void)
      78  {
      79    int i;
      80  
      81    for (i = 0; i < 8; i++)
      82      d[i] = ll[i];
      83  }
      84  
      85  void ull2d2 (void)
      86  {
      87    int i;
      88  
      89    for (i = 0; i < 8; i++)
      90      d[i] = ull[i];
      91  }
      92  
      93  void d2ll2 (void)
      94  {
      95    int i;
      96  
      97    for (i = 0; i < 8; i++)
      98      ll[i] = d[i];
      99  }
     100  
     101  void d2ull2 (void)
     102  {
     103    int i;
     104  
     105    for (i = 0; i < 8; i++)
     106      ull[i] = d[i];
     107  }
     108  
     109  void ll2f2 (void)
     110  {
     111    int i;
     112  
     113    for (i = 0; i < 8; i++)
     114      f[i] = ll[i];
     115  }
     116  
     117  void ull2f2 (void)
     118  {
     119    int i;
     120  
     121    for (i = 0; i < 8; i++)
     122      f[i] = ull[i];
     123  }
     124  
     125  void f2ll2 (void)
     126  {
     127    int i;
     128  
     129    for (i = 0; i < 8; i++)
     130      ll[i] = f[i];
     131  }
     132  
     133  void f2ull2 (void)
     134  {
     135    int i;
     136  
     137    for (i = 0; i < 8; i++)
     138      ull[i] = f[i];
     139  }
     140  
     141  void ll2d3 (void)
     142  {
     143    int i;
     144  
     145    for (i = 0; i < 16; i++)
     146      d[i] = ll[i];
     147  }
     148  
     149  void ull2d3 (void)
     150  {
     151    int i;
     152  
     153    for (i = 0; i < 16; i++)
     154      d[i] = ull[i];
     155  }
     156  
     157  void d2ll3 (void)
     158  {
     159    int i;
     160  
     161    for (i = 0; i < 16; i++)
     162      ll[i] = d[i];
     163  }
     164  
     165  void d2ull3 (void)
     166  {
     167    int i;
     168  
     169    for (i = 0; i < 16; i++)
     170      ull[i] = d[i];
     171  }
     172  
     173  void ll2f3 (void)
     174  {
     175    int i;
     176  
     177    for (i = 0; i < 16; i++)
     178      f[i] = ll[i];
     179  }
     180  
     181  void ull2f3 (void)
     182  {
     183    int i;
     184  
     185    for (i = 0; i < 16; i++)
     186      f[i] = ull[i];
     187  }
     188  
     189  void f2ll3 (void)
     190  {
     191    int i;
     192  
     193    for (i = 0; i < 16; i++)
     194      ll[i] = f[i];
     195  }
     196  
     197  void f2ull3 (void)
     198  {
     199    int i;
     200  
     201    for (i = 0; i < 16; i++)
     202      ull[i] = f[i];
     203  }