1  /* { dg-require-effective-target size32plus } */
       2  /* { dg-require-effective-target int32plus } */
       3  /* { dg-options "-O2 -floop-nest-optimize" } */
       4  
       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  
      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  }