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