| /llvm-project-15.0.7/llvm/test/Transforms/Coroutines/ |
| H A D | coro-save-nomerge.ll | 5 declare i8 @llvm.coro.suspend(token, i1) 12 ; CHECK: await.suspend: 16 ; CHECK: final.suspend: 25 br i1 %cmp, label %await.suspend, label %final.suspend 27 await.suspend: 32 final.suspend: 46 ; CHECK: await.suspend: 50 ; CHECK: final.suspend: 59 br i1 %cmp, label %await.suspend, label %final.suspend 61 await.suspend: [all …]
|
| H A D | coro-debug-O2.ll | 36 br i1 %ready, label %init.ready, label %init.suspend 41 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 42 switch i8 %suspend, label %coro.ret [ 53 br i1 %ready.again, label %await.ready, label %await.suspend 59 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 60 switch i8 %suspend.again, label %coro.ret [ 79 %final.suspend.coro.save = call token @llvm.coro.save(i8* null) 82 … %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 83 switch i8 %final.suspend.coro.suspend, label %coro.ret [ 114 … ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend [all …]
|
| H A D | coro-debug-dbg.values-not_used_in_frame.ll | 33 br i1 %ready, label %init.ready, label %init.suspend 38 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 39 switch i8 %suspend, label %coro.ret [ 57 br i1 %ready.again, label %await.ready, label %await.suspend 63 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 64 switch i8 %suspend.again, label %coro.ret [ 92 %final.suspend.coro.save = call token @llvm.coro.save(i8* null) 95 %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 96 switch i8 %final.suspend.coro.suspend, label %coro.ret [ 127 … ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend [all …]
|
| H A D | coro-debug-coro-frame.ll | 125 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 126 switch i8 %suspend, label %coro.ret [ 143 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 181 … %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 182 switch i8 %final.suspend.coro.suspend, label %coro.ret [ 213 … ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend 259 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 277 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 312 … %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 313 switch i8 %final.suspend.coro.suspend, label %coro.ret [ [all …]
|
| H A D | coro-debug-dbg.values.ll | 40 br i1 %ready, label %init.ready, label %init.suspend 45 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 46 switch i8 %suspend, label %coro.ret [ 64 br i1 %ready.again, label %await.ready, label %await.suspend 70 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 71 switch i8 %suspend.again, label %coro.ret [ 103 %final.suspend.coro.save = call token @llvm.coro.save(i8* null) 106 %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 107 switch i8 %final.suspend.coro.suspend, label %coro.ret [ 138 … ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend [all …]
|
| H A D | no-suspend.ll | 1 ; Test no suspend coroutines 35 br label %suspend 36 suspend: 87 br label %suspend 88 suspend: 139 suspend: 203 suspend: 258 suspend: 306 suspend: 359 suspend: [all …]
|
| H A D | coro-debug-dbg.addr.ll | 64 br i1 %ready, label %init.ready, label %init.suspend 69 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 70 switch i8 %suspend, label %coro.ret [ 87 br i1 %ready.again, label %await.ready, label %await.suspend 93 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 94 switch i8 %suspend.again, label %coro.ret [ 124 %final.suspend.coro.save = call token @llvm.coro.save(i8* null) 127 %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 128 switch i8 %final.suspend.coro.suspend, label %coro.ret [ 159 … ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend [all …]
|
| H A D | coro-debug-frame-variable.ll | 82 br i1 %ready, label %init.ready, label %init.suspend 87 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 88 switch i8 %suspend, label %coro.ret [ 109 br i1 %ready.again, label %await.ready, label %await.suspend 115 %suspend.again = call i8 @llvm.coro.suspend(token %save.again, i1 false) 116 switch i8 %suspend.again, label %coro.ret [ 151 %final.suspend.coro.save = call token @llvm.coro.save(i8* null) 154 %final.suspend.coro.suspend = call i8 @llvm.coro.suspend(token %final.suspend.coro.save, i1 true) 155 switch i8 %final.suspend.coro.suspend, label %coro.ret [ 186 … ; preds = %cleanup.cont, %after.coro.free, %final.suspend, %await.suspend, %init.suspend [all …]
|
| H A D | coro-materialize.ll | 1 ; Verifies that we materialize instruction across suspend points 12 %sp1 = call i8 @llvm.coro.suspend(token none, i1 false) 13 switch i8 %sp1, label %suspend [i8 0, label %resume1 17 %sp2 = call i8 @llvm.coro.suspend(token none, i1 false) 18 switch i8 %sp1, label %suspend [i8 0, label %resume2 29 br label %suspend 30 suspend: 41 declare i8 @llvm.coro.suspend(token, i1)
|
| H A D | coro-split-musttail7.ll | 20 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 22 switch i8 %suspend, label %exit [ 23 i8 0, label %await.suspend 26 await.suspend: 29 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) 60 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 62 switch i8 %suspend, label %exit [ 63 i8 0, label %await.suspend 66 await.suspend: 69 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) [all …]
|
| H A D | coro-split-musttail6.ll | 20 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 22 switch i8 %suspend, label %exit [ 23 i8 0, label %await.suspend 26 await.suspend: 29 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) 59 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 61 switch i8 %suspend, label %exit [ 62 i8 0, label %await.suspend 65 await.suspend: 68 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) [all …]
|
| H A D | coro-split-musttail1.ll | 1 ; Tests that coro-split will convert coro.resume followed by a suspend to a 16 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 17 switch i8 %suspend, label %exit [ 18 i8 0, label %await.suspend 21 await.suspend: 34 br label %final.suspend 40 br label %final.suspend 45 br label %final.suspend 46 final.suspend: 47 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) [all …]
|
| H A D | coro-split-musttail3.ll | 1 ; Tests that coro-split will convert coro.resume followed by a suspend to a 16 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 17 %cmp = icmp eq i8 %suspend, 0 18 br i1 %cmp, label %await.suspend, label %exit 19 await.suspend: 32 br label %final.suspend 38 br label %final.suspend 43 br label %final.suspend 44 final.suspend: 45 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) [all …]
|
| H A D | coro-split-recursive.ll | 10 declare i8 @llvm.coro.suspend(token, i1) 23 br i1 undef, label %if.then154, label %init.suspend 25 init.suspend: ; preds = %entry 27 %3 = call i8 @llvm.coro.suspend(token %save, i1 false) 31 if.then154: ; preds = %init.suspend, %entry 35 invoke.cont163: ; preds = %if.then154, %init.suspend
|
| H A D | ex5.ll | 1 ; Fifth example from Doc/Coroutines.rst (final suspend) 19 %s = call i8 @llvm.coro.suspend(token none, i1 false) 20 switch i8 %s, label %suspend [i8 0, label %while.cond 23 %s.final = call i8 @llvm.coro.suspend(token none, i1 true) 24 switch i8 %s.final, label %suspend [i8 0, label %trap 32 br label %suspend 33 suspend: 47 declare i8 @llvm.coro.suspend(token, i1)
|
| H A D | ex3.ll | 1 ; Third example from Doc/Coroutines.rst (two suspend points) 20 %0 = call i8 @llvm.coro.suspend(token none, i1 false) 21 switch i8 %0, label %suspend [i8 0, label %loop.resume 27 %1 = call i8 @llvm.coro.suspend(token none, i1 false) 28 switch i8 %1, label %suspend [i8 0, label %loop 33 br label %suspend 34 suspend: 68 declare i8 @llvm.coro.suspend(token, i1)
|
| H A D | coro-frame-unreachable.ll | 15 %0 = call i8 @llvm.coro.suspend(token none, i1 false) 16 switch i8 %0, label %suspend [i8 0, label %resume 24 br label %suspend 26 suspend: 33 br label %suspend 39 declare i8 @llvm.coro.suspend(token, i1)
|
| H A D | phi-coro-end.ll | 1 ; Verify that we correctly handle suspend when the coro.end block contains phi 10 %0 = call i8 @llvm.coro.suspend(token none, i1 false) 11 switch i8 %0, label %suspend [i8 0, label %cleanup i8 1, label %cleanup] 16 br label %suspend 18 suspend: 38 declare i8 @llvm.coro.suspend(token, i1)
|
| H A D | coro-split-musttail4.ll | 1 ; Tests that coro-split will convert a call before coro.suspend to a musttail call 2 ; while the user of the coro.suspend is a icmpinst. 18 %init_suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 27 %suspend = call i8 @llvm.coro.suspend(token %save2, i1 true) 28 %switch = icmp ult i8 %suspend, 2 55 declare i8 @llvm.coro.suspend(token, i1) #2
|
| H A D | coro-split-musttail5.ll | 16 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 18 switch i8 %suspend, label %exit [ 19 i8 0, label %await.suspend 22 await.suspend: 25 %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) 50 declare i8 @llvm.coro.suspend(token, i1) #2
|
| H A D | coro-alloca-08.ll | 12 ; The lifetime of testval starts and ends before coro.suspend. Even though consume.i8.array 27 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 28 switch i8 %suspend, label %exit [ 40 ; The lifetime of testval starts after coro.suspend. So it will never live across suspension 50 %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) 51 switch i8 %suspend, label %exit [ 78 declare i8 @llvm.coro.suspend(token, i1) #3
|
| /llvm-project-15.0.7/mlir/test/Dialect/Async/ |
| H A D | async-runtime-ref-counting.mlir | 89 async.coro.suspend %saved, ^suspend, ^resume, ^cleanup 94 cf.br ^suspend 95 ^suspend: 110 async.coro.suspend %saved, ^suspend, ^resume, ^cleanup 115 cf.br ^suspend 116 ^suspend: 132 async.coro.suspend %saved, ^suspend, ^resume, ^cleanup 144 ^suspend: 158 async.coro.suspend %3, ^suspend, ^resume, ^cleanup 165 async.coro.suspend %4, ^suspend, ^resume_1, ^cleanup [all …]
|
| H A D | coro.mlir | 43 // CHECK: async.coro.suspend %arg0 45 async.coro.suspend %arg0, ^suspend, ^resume, ^cleanup 54 ^suspend: 56 // CHECK: return {coro.suspend} 57 return { coro.suspend }
|
| /llvm-project-15.0.7/llvm/docs/ |
| H A D | Coroutines.rst | 107 points, suspend points must store the index of the active suspend in 275 <suspend> // returns a coroutine handle on first suspend 306 suspend: 474 <suspend> 476 <suspend> 525 suspend: 563 <suspend> 568 <suspend> 636 suspend: 676 .. _final suspend: [all …]
|
| /llvm-project-15.0.7/llvm/test/Transforms/LICM/ |
| H A D | sink-with-coroutine.ll | 1 ; Verifies that LICM is disabled for loops that contains coro.suspend. 14 ; CHECK-NEXT: [[SUSPEND:%.*]] = call i8 @llvm.coro.suspend(token none, i1 false) 36 %suspend = call i8 @llvm.coro.suspend(token none, i1 false) 37 switch i8 %suspend, label %bb2 [ 51 declare i8 @llvm.coro.suspend(token, i1)
|