; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -disable-output "-passes=print<da>" 2>&1 \
; RUN:     | FileCheck %s --check-prefixes=CHECK,CHECK-ALL
; RUN: opt < %s -disable-output "-passes=print<da>" -da-enable-dependence-test=exact-siv 2>&1 \
; RUN:     | FileCheck %s --check-prefixes=CHECK,CHECK-EXACT-SIV

; max_i = INT64_MAX/6  // 1537228672809129301
; for (i = 0; i <= max_i; i++) {
;   A[-6*i + INT64_MAX] = 0;
;   if (i)
;     A[3*i - 2] = 1;
; }
;
; There is a bidirectional dependency between `A[-6*i + INT64_MAX]`
; and `A[3*i - 2]`, for example,
;
;  memory access           | i = 1 | i = 768614336404564651 | i = max_i
; -------------------------|-------|------------------------|----------------
;  A[-6*i + INT64_MAX]     |       | A[3*max_i - 2]         | A[1]
;  A[3*i - 2]              | A[1]  |                        | A[3*max_i - 2]
;

define void @exactsiv_const_ovfl(ptr %A) {
; CHECK-LABEL: 'exactsiv_const_ovfl'
; CHECK-NEXT:  Src: store i8 0, ptr %idx.0, align 1 --> Dst: store i8 0, ptr %idx.0, align 1
; CHECK-NEXT:    da analyze - none!
; CHECK-NEXT:  Src: store i8 0, ptr %idx.0, align 1 --> Dst: store i8 1, ptr %idx.1, align 1
; CHECK-NEXT:    da analyze - output [*|<]!
; CHECK-NEXT:  Src: store i8 1, ptr %idx.1, align 1 --> Dst: store i8 1, ptr %idx.1, align 1
; CHECK-NEXT:    da analyze - none!
;
entry:
  br label %loop.header

loop.header:
  %i = phi i64 [ 0, %entry ], [ %i.inc, %loop.latch ]
  %subscript.0 = phi i64 [ 9223372036854775807, %entry ], [ %subscript.0.next, %loop.latch ]
  %subscript.1 = phi i64 [ -2, %entry ], [ %subscript.1.next, %loop.latch ]
  %idx.0 = getelementptr inbounds i8, ptr %A, i64 %subscript.0
  store i8 0, ptr %idx.0
  %cond.store = icmp ne i64 %i, 0
  br i1 %cond.store, label %if.store, label %loop.latch

if.store:
  %idx.1 = getelementptr inbounds i8, ptr %A, i64 %subscript.1
  store i8 1, ptr %idx.1
  br label %loop.latch

loop.latch:
  %i.inc = add nuw nsw i64 %i, 1
  %subscript.0.next = add nsw i64 %subscript.0, -6
  %subscript.1.next = add nsw i64 %subscript.1, 3
  %exitcond = icmp sgt i64 %i.inc, 1537228672809129301
  br i1 %exitcond, label %exit, label %loop.header

exit:
  ret void
}

; A generalized version of the above case.
;
; for (long long i = 0; i <= n / 6; i++) {
;   A[-6*i + n] = 0;
;   if (i)
;     A[3*i - 2] = 1;
; }

define void @exactsiv_param_ovfl(ptr %A, i64 %n) {
; CHECK-ALL-LABEL: 'exactsiv_param_ovfl'
; CHECK-ALL-NEXT:  Src: store i8 0, ptr %idx.0, align 1 --> Dst: store i8 0, ptr %idx.0, align 1
; CHECK-ALL-NEXT:    da analyze - none!
; CHECK-ALL-NEXT:  Src: store i8 0, ptr %idx.0, align 1 --> Dst: store i8 1, ptr %idx.1, align 1
; CHECK-ALL-NEXT:    da analyze - output [*|<]!
; CHECK-ALL-NEXT:  Src: store i8 1, ptr %idx.1, align 1 --> Dst: store i8 1, ptr %idx.1, align 1
; CHECK-ALL-NEXT:    da analyze - none!
;
; CHECK-EXACT-SIV-LABEL: 'exactsiv_param_ovfl'
; CHECK-EXACT-SIV-NEXT:  Src: store i8 0, ptr %idx.0, align 1 --> Dst: store i8 0, ptr %idx.0, align 1
; CHECK-EXACT-SIV-NEXT:    da analyze - output [*]!
; CHECK-EXACT-SIV-NEXT:  Src: store i8 0, ptr %idx.0, align 1 --> Dst: store i8 1, ptr %idx.1, align 1
; CHECK-EXACT-SIV-NEXT:    da analyze - output [*|<]!
; CHECK-EXACT-SIV-NEXT:  Src: store i8 1, ptr %idx.1, align 1 --> Dst: store i8 1, ptr %idx.1, align 1
; CHECK-EXACT-SIV-NEXT:    da analyze - output [*]!
;
entry:
  %bound = sdiv i64 %n, 6
  %guard = icmp sgt i64 %n, 0
  br i1 %guard, label %loop.header, label %exit

loop.header:
  %i = phi i64 [ 0, %entry ], [ %i.inc, %loop.latch ]
  %subscript.0 = phi i64 [ %n, %entry ], [ %subscript.0.next, %loop.latch ]
  %subscript.1 = phi i64 [ -2, %entry ], [ %subscript.1.next, %loop.latch ]
  %idx.0 = getelementptr inbounds i8, ptr %A, i64 %subscript.0
  store i8 0, ptr %idx.0
  %cond.store = icmp ne i64 %i, 0
  br i1 %cond.store, label %if.store, label %loop.latch

if.store:
  %idx.1 = getelementptr inbounds i8, ptr %A, i64 %subscript.1
  store i8 1, ptr %idx.1
  br label %loop.latch

loop.latch:
  %i.inc = add nuw nsw i64 %i, 1
  %subscript.0.next = add nsw i64 %subscript.0, -6
  %subscript.1.next = add nsw i64 %subscript.1, 3
  %exitcond = icmp sgt i64 %i.inc, %bound
  br i1 %exitcond, label %exit, label %loop.header

exit:
  ret void
}
