Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Bitcode / convergence-control.ll
blob7ba5609b6a7ccf36baba5aa60e98a183230ba9b5
1 ; RUN: llvm-dis < %s.bc | FileCheck %s
3 define void @loop_nesting() convergent {
4 A:
5   ; CHECK-LABEL: A:
6   ; CHECK: [[A:%.*]] = call token @llvm.experimental.convergence.entry()
7   ;
8   %a = call token @llvm.experimental.convergence.entry()
9   br label %B
12   ; CHECK-LABEL: B:
13   ; CHECK: [[B:%.*]] = call token @llvm.experimental.convergence.anchor()
14   ;
15   %b = call token @llvm.experimental.convergence.anchor()
16   br i1 undef, label %C, label %D
19   ; CHECK-LABEL: C:
20   ; CHECK: [[C:%.*]] = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token [[B]]) ]
21   ; CHEC K: call void @f() [ "convergencectrl"(token [[C]]) ]
22   ;
23   %c = call token @llvm.experimental.convergence.loop() [ "convergencectrl"(token %b) ]
24   call void @f() [ "convergencectrl"(token %c) ]
25   br label %B
28   ; CHECK-LABEL: D:
29   ; CHECK:  call void @f() [ "convergencectrl"(token [[B]]) ]
30   ;
31   call void @f() [ "convergencectrl"(token %b) ]
32   br i1 undef, label %B, label %E
35   ret void
38 declare void @f() convergent
40 declare token @llvm.experimental.convergence.entry()
41 declare token @llvm.experimental.convergence.anchor()
42 declare token @llvm.experimental.convergence.loop()