1 __attribute__ ((noinline)) void calculate(const double * __restrict__ A,const double * __restrict__ B,double * __restrict__ C)2calculate (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