1 /* { dg-require-effective-target size32plus } */
2 /* { dg-require-effective-target int32plus } */
3 /* { dg-options "-O2 -floop-nest-optimize" } */
4 
kernel_gemm(int ni,int nj,int nk,double alpha,double beta,double C[1024][1024],double A[1024][1024],double B[1024][1024])5 static void kernel_gemm(int ni, int nj, int nk, double alpha, double beta, double C[1024][1024], double A[1024][1024], double B[1024][1024])
6 {
7  int i, j, k;
8  for (i = 0; i < ni; i++)
9    for (j = 0; j < nj; j++)
10      {
11        C[i][j] *= beta;
12        for (k = 0; k < nk; ++k)
13          C[i][j] += alpha * A[i][k] * B[k][j];
14      }
15 }
16 
17 void *polybench_alloc_data (int, int);
18 
main(int argc,char ** argv)19 int main(int argc, char** argv) {
20   int ni = 1024;
21   int nj = 1024;
22   int nk = 1024;
23   double alpha;
24   double beta;
25   double (*C)[1024][1024];
26   C = (double(*)[1024][1024])polybench_alloc_data ((1024) * (1024), sizeof(double));
27   double (*A)[1024][1024];
28   A = (double(*)[1024][1024])polybench_alloc_data ((1024) * (1024), sizeof(double));
29   double (*B)[1024][1024];
30   kernel_gemm (ni, nj, nk, alpha, beta, *C, *A, *B);
31 }
32