; RUN: opt < %s -passes='print<loop-cache-cost>' -disable-output 2>&1 | FileCheck %s

target datalayout = "e-m:e-i64:64-n32:64"
target triple = "powerpc64le-unknown-linux-gnu"

; void foo(long n, long m, long o, int A[n][m], int B[n][m], int C[n]) {
;   for (long i = 0; i < n; i++)
;     for (long j = 0; j < m; j++) {
;         A[i][j] = A[i][j+1] + B[i-1][j] + B[i+1][j+1] + C[i];
;         A[i][j] += B[i][i];
;     }   
; }

; CHECK: Loop 'for.i' has cost = 20600
; CHECK-NEXT: Loop 'for.j' has cost = 800

define void @foo(i64 %n, i64 %m, ptr %A, ptr %B, ptr %C) {
entry:
  %cmp32 = icmp sgt i64 %n, 0
  %cmp230 = icmp sgt i64 %m, 0
  br i1 %cmp32, label %for.cond1.preheader.lr.ph, label %for.end

for.cond1.preheader.lr.ph:                        ; preds = %entry
  br i1 %cmp230, label %for.i.preheader, label %for.end

for.i.preheader:                                  ; preds = %for.cond1.preheader.lr.ph
  br label %for.i

for.i:                                            ; preds = %for.inci, %for.i.preheader.split
  %i = phi i64 [ %inci, %for.inci ], [ 0, %for.i.preheader ]
  %subione = sub i64 %i, 1
  %addione = add i64 %i, 1
  %muli = mul i64 %i, %m
  %muliminusone = mul i64 %subione, %m
  %muliplusone = mul i64 %addione, %m
  br label %for.j

for.j:                                            ; preds = %for.incj, %for.i
  %j = phi i64 [ %incj, %for.incj ], [ 0, %for.i ]
  %addj = add i64 %muli, %j

  ; B[i-1][j]
  %arrayidx1 = add i64 %j, %muliminusone
  %arrayidx2 = getelementptr inbounds i32, ptr %B, i64 %arrayidx1
  %elem_B1 = load i32, ptr %arrayidx2, align 4

  ; B[i-1][j+1]
  %addjone = add i64 %j, 1
  %arrayidx3 = add i64 %addjone, %muliminusone
  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %arrayidx3
  %elem_B2 = load i32, ptr %arrayidx4, align 4

  ; C[i]
  %arrayidx6 = getelementptr inbounds i32, ptr %C, i64 %i
  %elem_C = load i32, ptr %arrayidx6, align 4

  ; A[i][j+1]
  %arrayidx7 = add i64 %addjone, %muli
  %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 %arrayidx7
  %elem_A = load i32, ptr %arrayidx8, align 4

  ; A[i][j] = A[i][j+1] + B[i-1][j] + B[i-1][j+1] + C[i]
  %addB = add i32 %elem_B1, %elem_B2
  %addC = add i32 %addB, %elem_C
  %addA = add i32 %elem_A, %elem_C
  %arrayidx9 = add i64 %j, %muli
  %arrayidx10 = getelementptr inbounds i32, ptr %A, i64 %arrayidx9
  store i32 %addA, ptr %arrayidx10, align 4

  ; A[i][j] += B[i][i];
  %arrayidx11 = add i64 %j, %muli
  %arrayidx12 = getelementptr inbounds i32, ptr %A, i64 %arrayidx11
  %elem_A1 = load i32, ptr %arrayidx12, align 4
  %arrayidx13 = add i64 %i, %muli
  %arrayidx14 = getelementptr inbounds i32, ptr %B, i64 %arrayidx13
  %elem_B3 = load i32, ptr %arrayidx14, align 4
  %addA1 = add i32 %elem_A1, %elem_B3
  store i32 %addA1, ptr %arrayidx12, align 4

  br label %for.incj

for.incj:                                         ; preds = %for.j
  %incj = add nsw i64 %j, 1
  %exitcond54.us = icmp eq i64 %incj, %m
  br i1 %exitcond54.us, label %for.inci, label %for.j

for.inci:                                         ; preds = %for.incj
  %inci = add nsw i64 %i, 1
  %exitcond55.us = icmp eq i64 %inci, %n
  br i1 %exitcond55.us, label %for.end.loopexit, label %for.i

for.end.loopexit:                                 ; preds = %for.inci
  br label %for.end

for.end:                                          ; preds = %for.end.loopexit, %for.cond1.preheader.lr.ph, %entry
  ret void
}

