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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
/* { dg-require-effective-target vect_int } */
/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
#include <stdarg.h>
#include "tree-vect.h"
#define N 16
#define M 4
__attribute__ ((noinline))
int main1 ()
{
int i, j;
int ib[M][M][N] = {{{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}},
{{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}},
{{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}},
{{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45},
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}}};
int ia[M][M][N];
int ic[N];
/* Multidimensional array. Aligned. The "inner" dimensions
are invariant in the inner loop. Load and store. */
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
ia[i][1][j] = ib[2][i][j];
}
}
/* check results: */
for (i = 0; i < M; i++)
{
#pragma GCC novector
for (j = 0; j < N; j++)
{
if (ia[i][1][j] != ib[2][i][j])
abort();
}
}
/* Multidimensional array. Aligned. The "inner" dimensions
are invariant in the inner loop. Load. */
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
ic[j] = ib[2][i][j];
}
}
/* check results: */
for (i = 0; i < M; i++)
{
#pragma GCC novector
for (j = 0; j < N; j++)
{
if (ic[j] != ib[2][i][j])
abort();
}
}
return 0;
}
int main (void)
{
check_vect ();
return main1 ();
}
/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */
|