1 __attribute__ ((noinline)) void
calculate(const double * __restrict__ A,const double * __restrict__ B,double * __restrict__ C)2 calculate (const double *__restrict__ A, const double *__restrict__ B,
3 	   double *__restrict__ C)
4 {
5   TYPE m = 0;
6   TYPE n = 0;
7   TYPE k = 0;
8 
9   A = (const double *) __builtin_assume_aligned (A, 16);
10   B = (const double *) __builtin_assume_aligned (B, 16);
11   C = (double *) __builtin_assume_aligned (C, 16);
12 
13   for (n = 0; n < 9; n++)
14     {
15       for (m = 0; m < 10; m++)
16 	{
17 	  C[(n * 10) + m] = 0.0;
18 	}
19 
20       for (k = 0; k < 17; k++)
21 	{
22 #pragma simd
23 	  for (m = 0; m < 10; m++)
24 	    {
25 	      C[(n * 10) + m] += A[(k * 20) + m] * B[(n * 20) + k];
26 	    }
27 	}
28     }
29 }
30 
31