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