xref: /llvm-project/polly/test/CodeGen/non-affine-phi-node-expansion-3.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly -passes=polly-codegen \
2; RUN:     -S < %s | FileCheck %s
3
4define void @foo(ptr %A, i1 %cond0, i1 %cond1) {
5entry:
6  br label %loop
7
8loop:
9  %indvar = phi i64 [0, %entry], [%indvar.next, %backedge]
10  %val0 = fadd float 1.0, 2.0
11  %val1 = fadd float 1.0, 2.0
12  %val2 = fadd float 1.0, 2.0
13  br i1 %cond0, label %branch1, label %backedge
14
15; CHECK-LABEL: polly.stmt.loop:
16; CHECK-NEXT: %p_val0 = fadd float 1.000000e+00, 2.000000e+00
17; CHECK-NEXT: %p_val1 = fadd float 1.000000e+00, 2.000000e+00
18; CHECK-NEXT: %p_val2 = fadd float 1.000000e+00, 2.000000e+00
19; CHECK-NEXT: br i1
20
21branch1:
22  br i1 %cond1, label %branch2, label %backedge
23
24; CHECK-LABEL: polly.stmt.branch1:
25; CHECK-NEXT: br i1
26
27branch2:
28  br label %backedge
29
30; CHECK-LABEL: polly.stmt.branch2:
31; CHECK-NEXT:    br label
32
33; CHECK-LABEL: polly.stmt.backedge.exit:
34; CHECK:         %polly.merge = phi float [ %p_val0, %polly.stmt.loop ], [ %p_val1, %polly.stmt.branch1 ], [ %p_val2, %polly.stmt.branch2 ]
35
36backedge:
37  %merge = phi float [%val0, %loop], [%val1, %branch1], [%val2, %branch2]
38  %indvar.next = add i64 %indvar, 1
39  store float %merge, ptr %A
40  %cmp = icmp sle i64 %indvar.next, 100
41  br i1 %cmp, label %loop, label %exit
42
43exit:
44  ret void
45}
46