xref: /llvm-project/llvm/test/Analysis/UniformityAnalysis/AMDGPU/phi-undef.ll (revision ae77aceba5ad6ee575d3d79eb0259624322b19f4)
1*ae77acebSpvanhout; RUN: opt -mtriple amdgcn-- -passes='print<uniformity>' -disable-output %s 2>&1 | FileCheck %s
2*ae77acebSpvanhout
3*ae77acebSpvanhout; CHECK-LABEL: 'test1':
4*ae77acebSpvanhout; CHECK: DIVERGENT: i32 %bound
5*ae77acebSpvanhout; CHECK: {{^  *}} %counter =
6*ae77acebSpvanhout; CHECK: DIVERGENT: %break = icmp sge i32 %counter, %bound
7*ae77acebSpvanhout; CHECK: DIVERGENT: br i1 %break, label %footer, label %body
8*ae77acebSpvanhout; CHECK: {{^  *}}%counter.next =
9*ae77acebSpvanhout; CHECK: {{^  *}}%counter.footer =
10*ae77acebSpvanhout; CHECK: DIVERGENT: br i1 %break, label %end, label %header
11*ae77acebSpvanhout
12*ae77acebSpvanhout; Note: %counter is not divergent!
13*ae77acebSpvanhout
14*ae77acebSpvanhoutdefine amdgpu_ps void @test1(i32 %bound) {
15*ae77acebSpvanhoutentry:
16*ae77acebSpvanhout  br label %header
17*ae77acebSpvanhout
18*ae77acebSpvanhoutheader:
19*ae77acebSpvanhout  %counter = phi i32 [ 0, %entry ], [ %counter.footer, %footer ]
20*ae77acebSpvanhout  %break = icmp sge i32 %counter, %bound
21*ae77acebSpvanhout  br i1 %break, label %footer, label %body
22*ae77acebSpvanhout
23*ae77acebSpvanhoutbody:
24*ae77acebSpvanhout  %counter.next = add i32 %counter, 1
25*ae77acebSpvanhout  br label %footer
26*ae77acebSpvanhout
27*ae77acebSpvanhoutfooter:
28*ae77acebSpvanhout  %counter.footer = phi i32 [ %counter.next, %body ], [ undef, %header ]
29*ae77acebSpvanhout  br i1 %break, label %end, label %header
30*ae77acebSpvanhout
31*ae77acebSpvanhoutend:
32*ae77acebSpvanhout  ret void
33*ae77acebSpvanhout}
34