/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */

#include "avx-check.h"

#define N 128

char **ep;
char **fp;
extern int strcmp (const char *, const char *);

__attribute__ ((noinline))
void
foo (void)
{
  ep = (char **) malloc (N);
  fp = (char **) malloc (N);
}

void
avx_test (void)
{
  int i;
  char **ap, **bp;
  char *str = "STR";

  foo ();

  ap = ep;
  bp = fp;

  for (i = N; i > 0; i--)
    {
      *ap++ = str;
      *bp++ = str;
    }

  for (i = N; i > 0; i--)
    {
      if (strcmp (*--ap, "STR") != 0)
	abort ();
      if (strcmp (*--bp, "STR") != 0)
	abort ();
    }
}
