1 static double identity[4][4] = {{1, 0, 0, 0},
2 {0, 1, 0, 0},
3 {0, 0, 1, 0},
4 {0, 0, 0, 1}};
5 static double expected[4][4] = {{1, 0, 0, 0},
6 {0, 0, 0, 0},
7 {0, 0, 0, 0},
8 {0, 0, 0, 0}};
9
10 static void __attribute__((noinline,noclone))
11 kernel(double A[4][4])
12 {
13 double tmp[4][4];
14 for (int j = 0; j < 4; j++)
15 for (int k = 0; k < 4; k++)
16 tmp[j][k] = identity[j][0] * identity[j][k];
17 for (int j = 0; j < 4; j++ )
18 for (int k = 0; k < 4; k++)
19 A[j][k] = tmp[j][k];
20 }
21
22 int main(void)
23 {
24 double A[4][4] = {{0.0}};
25 kernel(A);
26 for ( int i = 0; i < 4; i++ )
27 for ( int j = 0; j < 4; j++ )
28 if (A[i][j] != expected[i][j])
29 __builtin_abort ();
30 return 0;
31 }