| ; RUN: llvm-dis < %s.bc | FileCheck %s |
| define void @loop_nesting(i1 %arg) convergent { |
| ; CHECK: [[A:%.*]] = call token @llvm.experimental.convergence.entry() |
| %a = call token @llvm.experimental.convergence.entry() |
| ; CHECK: [[B:%.*]] = call token @llvm.experimental.convergence.anchor() |
| %b = call token @llvm.experimental.convergence.anchor() |
| br i1 %arg, label %C, label %D |
| ; CHECK: [[C:%.*]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[B]]) ] |
| ; CHEC K: call void @f() [ "convergencectrl"(token [[C]]) ] |
| %c = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %b) ] |
| call void @f() [ "convergencectrl"(token %c) ] |
| ; CHECK: call void @f() [ "convergencectrl"(token [[B]]) ] |
| call void @f() [ "convergencectrl"(token %b) ] |
| br i1 %arg, label %B, label %E |
| declare void @f() convergent |
| declare token @llvm.experimental.convergence.entry() |
| declare token @llvm.experimental.convergence.anchor() |
| declare token @llvm.experimental.convergence.loop() |