; A[i][k][j] += B[i][k][j] + C[i][j][k];
; }
-; CHECK: Loop 'for.i' has cost = 3000000
-; CHECK-NEXT: Loop 'for.k' has cost = 2030000
-; CHECK-NEXT: Loop 'for.j' has cost = 1060000
+; CHECK-DAG: Loop 'for.i' has cost = 3000000
+; CHECK-DAG: Loop 'for.k' has cost = 2030000
+; CHECK-DAG: Loop 'for.j' has cost = 1060000
define void @foo(i64 %n, i64 %m, i64 %o, i32* %A, i32* %B, i32* %C) {
entry:
; C[i][j] = C[i][j] + A[i][k] * B[k][j];
; }
-; CHECK:Loop 'for.i' has cost = 2010000
-; CHECK-NEXT:Loop 'for.k' has cost = 1040000
-; CHECK-NEXT:Loop 'for.j' has cost = 70000
+; CHECK-DAG:Loop 'for.i' has cost = 2010000
+; CHECK-DAG:Loop 'for.k' has cost = 1040000
+; CHECK-DAG:Loop 'for.j' has cost = 70000
define void @matmul(i64 %n, i64 %m, i64 %o, i32* %A, i32* %B, i32* %C) {
entry:
; y[k+1][j][i][l] = y[k+1][j][i][l] + b[k][j][i][m][l]*x[k][j][i][m]
; }
-; CHECK: Loop 'k_loop' has cost = 30000000000
-; CHECK-NEXT: Loop 'j_loop' has cost = 30000000000
-; CHECK-NEXT: Loop 'i_loop' has cost = 30000000000
-; CHECK-NEXT: Loop 'm_loop' has cost = 10700000000
-; CHECK-NEXT: Loop 'l_loop' has cost = 1300000000
+; CHECK-DAG: Loop 'k_loop' has cost = 30000000000
+; CHECK-DAG: Loop 'j_loop' has cost = 30000000000
+; CHECK-DAG: Loop 'i_loop' has cost = 30000000000
+; CHECK-DAG: Loop 'm_loop' has cost = 10700000000
+; CHECK-DAG: Loop 'l_loop' has cost = 1300000000
%_elem_type_of_double = type <{ double }>
; A[2*i+3][3*j-4][2*k+7] = 1;
; }
-; CHECK: Loop 'for.i' has cost = 1000000
-; CHECK-NEXT: Loop 'for.j' has cost = 1000000
-; CHECK-NEXT: Loop 'for.k' has cost = 60000
+; CHECK-DAG: Loop 'for.i' has cost = 1000000
+; CHECK-DAG: Loop 'for.j' has cost = 1000000
+; CHECK-DAG: Loop 'for.k' has cost = 60000
define void @foo(i64 %n, i64 %m, i64 %o, i32* %A) {
entry:
; }
; }
-; CHECK: Loop 'for.i' has cost = 20600
-; CHECK-NEXT: Loop 'for.j' has cost = 800
+; CHECK-DAG: Loop 'for.i' has cost = 20600
+; CHECK-DAG: Loop 'for.j' has cost = 800
define void @foo(i64 %n, i64 %m, i32* %A, i32* %B, i32* %C) {
entry: