2 /* { dg-options "-O2 -floop-interchange -fdump-tree-linterchange-details" } */
3 /* { dg-skip-if "too big data segment" { avr-*-* visium-*-* } } */
6 int a
[M
][M
], b
[M
][M
], c
[M
][M
], d
[M
][M
];
7 void __attribute__((noinline
))
10 for (int i
= 0; i
< n
; i
++)
11 for (int k
= 0; k
< n
; k
++)
12 for (int j
= 0; j
< n
; j
++)
13 c
[i
][j
] = c
[i
][j
] + a
[i
][k
]*b
[k
][j
];
16 void __attribute__((noinline
))
19 for (int i
= 0; i
< n
; i
++)
21 for (int j
= 0; j
< n
; j
++)
23 for (int k
= 0; k
< n
; k
++)
24 d
[i
][j
] = d
[i
][j
] + a
[i
][k
]*b
[k
][j
];
26 asm volatile ("" ::: "memory");
28 asm volatile ("" ::: "memory");
34 static void __attribute__((noinline
))
37 for (int j
= 0; j
< M
; j
++)
46 static int __attribute__((noinline
))
49 for (int j
= 0; j
< M
; j
++)
50 if (c
[i
][j
] != d
[i
][j
])
58 for (int i
= 0; i
< M
; ++i
)
64 for (int i
= 0; i
< M
; ++i
)
71 /* { dg-final { scan-tree-dump-not "Loop_pair<outer:., inner:.> is interchanged" "linterchange" } } */