1; RUN: opt %loadPolly -polly-vectorizer=polly -polly-codegen \
2; RUN:      < %s -S | FileCheck %s
3
4; #pragma known-parallel
5; for (int c0 = 0; c0 <= min(15, N - 1); c0 += 1)
6;   Stmt_if_then(c0);
7
8; CHECK: polly.stmt.if.then:                               ; preds = %polly.loop_header
9; CHECK:   %p_conv = sitofp i64 %polly.indvar to float
10; CHECK:   %scevgep = getelementptr float, float* %A, i64 %polly.indvar
11; CHECK:   %_p_scalar_ = load float, float* %scevgep, align 4, !alias.scope !0, !noalias !2, !llvm.mem.parallel_loop_access !3
12; CHECK:   %p_add = fadd float %p_conv, %_p_scalar_
13; CHECK:   store float %p_add, float* %scevgep, align 4, !alias.scope !0, !noalias !2, !llvm.mem.parallel_loop_access !3
14
15define void @foo(float* %A, i64 %N) #0 {
16entry:
17  br label %for.body
18
19for.body:                                         ; preds = %entry, %for.inc
20  %i.02 = phi i64 [ 0, %entry ], [ %inc, %for.inc ]
21  %cmp1 = icmp slt i64 %i.02, %N
22  br i1 %cmp1, label %if.then, label %for.inc
23
24if.then:                                          ; preds = %for.body
25  %conv = sitofp i64 %i.02 to float
26  %arrayidx = getelementptr inbounds float, float* %A, i64 %i.02
27  %0 = load float, float* %arrayidx, align 4
28  %add = fadd float %conv, %0
29  store float %add, float* %arrayidx, align 4
30  br label %for.inc
31
32for.inc:                                          ; preds = %for.body, %if.then
33  %inc = add nuw nsw i64 %i.02, 1
34  %exitcond = icmp ne i64 %inc, 16
35  br i1 %exitcond, label %for.body, label %for.end
36
37for.end:                                          ; preds = %for.inc
38  ret void
39}
40