; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals none --version 6
; RUN: opt -S -passes='loop-vectorize,verify' -enable-vplan-native-path -force-vector-width=2 < %s | FileCheck %s

; The noalias.scope.decl intrinsic declares a noalias scope valid for a single
; iteration. During outer loop vectorization, emitting it as a single-scalar
; replicate would incorrectly extend the scope across multiple original
; iterations packed into one vector iteration. Bail out of vectorization for
; outer loops containing noalias.scope.decl.
; FIXME: We could still vectorize by dropping the noalias.scope.decl and
; stripping !alias.scope/!noalias metadata from the loop body.

define void @test_noalias_scope_decl(ptr %a, ptr %b, i64 %n) {
; CHECK-LABEL: define void @test_noalias_scope_decl(
; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], i64 [[N:%.*]]) {
; CHECK-NEXT:  [[SCALAR_PH:.*]]:
; CHECK-NEXT:    br label %[[OUTER_HEADER:.*]]
; CHECK:       [[OUTER_HEADER]]:
; CHECK-NEXT:    [[J:%.*]] = phi i64 [ 0, %[[SCALAR_PH]] ], [ [[J_NEXT:%.*]], %[[OUTER_LATCH:.*]] ]
; CHECK-NEXT:    call void @llvm.experimental.noalias.scope.decl(metadata [[META0:![0-9]+]])
; CHECK-NEXT:    br label %[[INNER:.*]]
; CHECK:       [[INNER]]:
; CHECK-NEXT:    [[K:%.*]] = phi i64 [ 0, %[[OUTER_HEADER]] ], [ [[K_NEXT:%.*]], %[[INNER]] ]
; CHECK-NEXT:    [[IDX:%.*]] = add i64 [[J]], [[K]]
; CHECK-NEXT:    [[PTR_A:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[IDX]]
; CHECK-NEXT:    [[VAL:%.*]] = load i32, ptr [[PTR_A]], align 4, !alias.scope [[META0]]
; CHECK-NEXT:    [[PTR_B:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[IDX]]
; CHECK-NEXT:    store i32 [[VAL]], ptr [[PTR_B]], align 4, !noalias [[META0]]
; CHECK-NEXT:    [[K_NEXT]] = add i64 [[K]], 1
; CHECK-NEXT:    [[INNER_COND:%.*]] = icmp eq i64 [[K_NEXT]], [[N]]
; CHECK-NEXT:    br i1 [[INNER_COND]], label %[[OUTER_LATCH]], label %[[INNER]]
; CHECK:       [[OUTER_LATCH]]:
; CHECK-NEXT:    [[J_NEXT]] = add i64 [[J]], 1
; CHECK-NEXT:    [[OUTER_COND:%.*]] = icmp eq i64 [[J_NEXT]], [[N]]
; CHECK-NEXT:    br i1 [[OUTER_COND]], label %[[EXIT:.*]], label %[[OUTER_HEADER]], !llvm.loop [[LOOP3:![0-9]+]]
; CHECK:       [[EXIT]]:
; CHECK-NEXT:    ret void
;
entry:
  br label %outer.header

outer.header:
  %j = phi i64 [ 0, %entry ], [ %j.next, %outer.latch ]
  call void @llvm.experimental.noalias.scope.decl(metadata !3)
  br label %inner

inner:
  %k = phi i64 [ 0, %outer.header ], [ %k.next, %inner ]
  %idx = add i64 %j, %k
  %ptr.a = getelementptr inbounds i32, ptr %a, i64 %idx
  %val = load i32, ptr %ptr.a, align 4, !alias.scope !3
  %ptr.b = getelementptr inbounds i32, ptr %b, i64 %idx
  store i32 %val, ptr %ptr.b, align 4, !noalias !3
  %k.next = add i64 %k, 1
  %inner.cond = icmp eq i64 %k.next, %n
  br i1 %inner.cond, label %outer.latch, label %inner

outer.latch:
  %j.next = add i64 %j, 1
  %outer.cond = icmp eq i64 %j.next, %n
  br i1 %outer.cond, label %exit, label %outer.header, !llvm.loop !0

exit:
  ret void
}


!0 = distinct !{!0, !1, !2}
!1 = !{!"llvm.loop.mustprogress"}
!2 = !{!"llvm.loop.vectorize.enable", i1 true}
!3 = !{!4}
!4 = distinct !{!4, !5}
!5 = distinct !{!5}
