/* { dg-require-effective-target vect_int } */

#include <stdarg.h>
#include <stdio.h>
#include "tree-vect.h"

#define N 8 

int
main1 ()
{
  int i;
  unsigned short out[N*8];
  unsigned short 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};
  unsigned short in2[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};
  unsigned short out2[N*8];

  for (i = 0; i < N*2; i++)
    {
      out[i*2] = in[i*2] + 5;
      out[i*2 + 1] = in[i*2 + 1] + 6;

      out2[i*4] = in2[i*4] + 2;
      out2[i*4 + 1] = in2[i*4 + 1] + 2;
      out2[i*4 + 2] = in2[i*4 + 2] + 1;
      out2[i*4 + 3] = in2[i*4 + 3] + 3;
    }

  /* check results:  */
  for (i = 0; i < N*2; i++)
    {
      if (out[i*2] != in[i*2] + 5
         || out[i*2 + 1] != in[i*2 + 1] + 6
         || out2[i*4] !=  in2[i*4] + 2
         || out2[i*4 + 1] != in2[i*4 + 1] + 2
         || out2[i*4 + 2] != in2[i*4 + 2] + 1
         || out2[i*4 + 3] != in2[i*4 + 3] + 3)
        abort ();
    }

  return 0;
}

int main (void)
{
  check_vect ();

  main1 ();

  return 0;
}

/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
  
