#include <stdio.h>
|
#include <stdio.h>
|
#include <stdlib.h>
|
#include <stdlib.h>
|
#include <math.h>
|
#include <math.h>
|
#include <string.h>
|
#include <string.h>
|
|
|
void mem_init (void);
|
void mem_init (void);
|
int ARCHnodes, ARCHnodes1;
|
int ARCHnodes, ARCHnodes1;
|
int ***vel;
|
int ***vel;
|
|
|
/* The whole matrix VEL is flattened (3 dimensions).
|
/* The whole matrix VEL is flattened (3 dimensions).
|
The dimensions are NOT transposed. */
|
The dimensions are NOT transposed. */
|
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
|
|
int
|
int
|
main (int argc, char **argv)
|
main (int argc, char **argv)
|
{
|
{
|
int i, j, k;
|
int i, j, k;
|
|
|
ARCHnodes = 2;
|
ARCHnodes = 2;
|
ARCHnodes1 = 4;
|
ARCHnodes1 = 4;
|
|
|
/* Dynamic memory allocations and initializations */
|
/* Dynamic memory allocations and initializations */
|
|
|
mem_init ();
|
mem_init ();
|
|
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
{
|
{
|
for (k = 0; k < 4; k++)
|
for (k = 0; k < 4; k++)
|
{
|
{
|
printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
|
printf ("[%d][%d][%d]=%d ", i, j, k, vel[i][j][k]);
|
}
|
}
|
printf ("\n");
|
printf ("\n");
|
}
|
}
|
printf ("\n");
|
printf ("\n");
|
}
|
}
|
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
free (vel[i][j]);
|
free (vel[i][j]);
|
|
|
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
free (vel[i]);
|
free (vel[i]);
|
|
|
free (vel);
|
free (vel);
|
return 0;
|
return 0;
|
}
|
}
|
|
|
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
/* Dynamic memory allocations and initializations */
|
/* Dynamic memory allocations and initializations */
|
|
|
void
|
void
|
mem_init (void)
|
mem_init (void)
|
{
|
{
|
|
|
signed int i, j, k,d;
|
signed int i, j, k,d;
|
|
|
d = 0;
|
d = 0;
|
vel = (int ***) malloc (ARCHnodes * sizeof (int **));
|
vel = (int ***) malloc (ARCHnodes * sizeof (int **));
|
|
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
vel[i] = (int **) malloc (3 * sizeof (int *));
|
vel[i] = (int **) malloc (3 * sizeof (int *));
|
if (vel[i] == (int **) NULL)
|
if (vel[i] == (int **) NULL)
|
{
|
{
|
fprintf (stderr, "malloc failed for vel[%d]\n", i);
|
fprintf (stderr, "malloc failed for vel[%d]\n", i);
|
fflush (stderr);
|
fflush (stderr);
|
exit (0);
|
exit (0);
|
}
|
}
|
}
|
}
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
|
vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
|
}
|
}
|
}
|
}
|
for (i = 0; i < ARCHnodes; i++)
|
for (i = 0; i < ARCHnodes; i++)
|
{
|
{
|
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
{
|
{
|
for (k = 0; k < ARCHnodes1; k++)
|
for (k = 0; k < ARCHnodes1; k++)
|
{
|
{
|
printf ("acc to dim2 ");
|
printf ("acc to dim2 ");
|
vel[i][j][k] = d;
|
vel[i][j][k] = d;
|
d++;
|
d++;
|
}
|
}
|
}
|
}
|
}
|
}
|
printf ("\n");
|
printf ("\n");
|
}
|
}
|
|
|
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
|
/* { dg-final-use { scan-ipa-dump-times "Flattened 3 dimensions" 1 "matrix-reorg" } } */
|
/* { dg-final-use { scan-ipa-dump-times "Transposed" 0 "matrix-reorg" } } */
|
/* { dg-final-use { scan-ipa-dump-times "Transposed" 0 "matrix-reorg" } } */
|
/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
|
/* { dg-final-use { cleanup-ipa-dump "matrix-reorg" } } */
|
|
|