1/* { dg-do run } */
2/* { dg-require-effective-target avx } */
3/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
4
5#include "avx-check.h"
6
7#define N 128
8
9char **ep;
10char **fp;
11char **mp;
12char **lp;
13extern int strcmp (const char *, const char *);
14
15__attribute__ ((noinline))
16void
17foo (void)
18{
19  mp = (char **) malloc (N);
20  lp = (char **) malloc (N);
21  ep = (char **) malloc (N);
22  fp = (char **) malloc (N);
23}
24
25void
26avx_test (void)
27{
28  int i;
29  char **ap, **bp, **cp, **dp;
30  char *str = "STR";
31
32  foo ();
33
34  cp = mp;
35  dp = lp;
36
37  for (i = N; i > 0; i--)
38    {
39      *cp++ = str;
40      *dp++ = str;
41    }
42
43  ap = ep;
44  bp = fp;
45  cp = mp;
46  dp = lp;
47
48  for (i = N; i > 0; i--)
49    {
50      *ap++ = *cp++;
51      *bp++ = *dp++;
52    }
53
54  for (i = N; i > 0; i--)
55    {
56      if (strcmp (*--ap, "STR") != 0)
57	abort ();
58      if (strcmp (*--bp, "STR") != 0)
59	abort ();
60    }
61}
62