summaryrefslogtreecommitdiff
path: root/test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll')
-rw-r--r--test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll b/test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll
new file mode 100644
index 0000000000000..ca93dda2c5739
--- /dev/null
+++ b/test/Analysis/DivergenceAnalysis/AMDGPU/unreachable-loop-block.ll
@@ -0,0 +1,17 @@
+; RUN: opt %s -mtriple amdgcn-- -analyze -divergence | FileCheck %s
+
+; CHECK: DIVERGENT: %tmp = cmpxchg volatile
+define void @unreachable_loop(i32 %tidx) #0 {
+entry:
+ unreachable
+
+unreachable_loop: ; preds = %do.body.i, %if.then11
+ %tmp = cmpxchg volatile i32 addrspace(1)* null, i32 0, i32 0 seq_cst seq_cst
+ %cmp.i = extractvalue { i32, i1 } %tmp, 1
+ br i1 %cmp.i, label %unreachable_loop, label %end
+
+end: ; preds = %do.body.i51, %atomicAdd_g_f.exit
+ unreachable
+}
+
+attributes #0 = { norecurse nounwind }