1 /* { dg-do compile } */
2 /* { dg-options "-O3" } */
3
4 #pragma GCC target "+nosve"
5
6 int a[30 +1][30 +1], b[30 +1][30 +1], r[30 +1][30 +1];
7
8 void foo (void) {
9 int i, j, k;
10
11 for ( i = 1; i <= 30; i++ )
12 for ( j = 1; j <= 30; j++ ) {
13 r[i][j] = 0;
14 for(k = 1; k <= 30; k++ )
15 r[i][j] += a[i][k]*b[k][j];
16 }
17 }
18
19 /* { dg-final { scan-assembler "ldr\\tq\[0-9\]+, \\\[x\[0-9\]+\\\], \[0-9\]+" } } */
20 /* { dg-final { scan-assembler "mla\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+" } } */
21 /* { dg-final { scan-assembler-not {dup} } } */
22 /* { dg-final { scan-assembler-not {fmov} } } */