brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 17dfe2c Raw
76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes='simplifycfg<hoist-common-insts>' -S | FileCheck %s3 4declare token @llvm.coro.save(ptr) #05declare i8 @llvm.coro.suspend(token, i1)6 7define void @final_nonfinal_suspend(i32 %x) {8; CHECK-LABEL: @final_nonfinal_suspend(9; CHECK-NEXT:  entry:10; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[X:%.*]], 011; CHECK-NEXT:    br i1 [[CMP]], label [[AWAIT_SUSPEND:%.*]], label [[FINAL_SUSPEND:%.*]]12; CHECK:       await.suspend:13; CHECK-NEXT:    [[TMP0:%.*]] = call token @llvm.coro.save(ptr null)14; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.coro.suspend(token [[TMP0]], i1 false)15; CHECK-NEXT:    br label [[CORO_RET:%.*]]16; CHECK:       final.suspend:17; CHECK-NEXT:    [[TMP2:%.*]] = call token @llvm.coro.save(ptr null)18; CHECK-NEXT:    [[TMP3:%.*]] = call i8 @llvm.coro.suspend(token [[TMP2]], i1 true)19; CHECK-NEXT:    br label [[CORO_RET]]20; CHECK:       coro.ret:21; CHECK-NEXT:    ret void22;23entry:24  %cmp = icmp slt i32 %x, 025  br i1 %cmp, label %await.suspend, label %final.suspend26 27await.suspend:28  %0 = call token @llvm.coro.save(ptr null)29  %1 = call i8 @llvm.coro.suspend(token %0, i1 false)30  br label %coro.ret31 32final.suspend:33  %2 = call token @llvm.coro.save(ptr null)34  %3 = call i8 @llvm.coro.suspend(token %2, i1 true)35  br label %coro.ret36 37coro.ret:38  ret void39}40 41define void @both_nonfinal_suspend(i32 %x) {42; CHECK-LABEL: @both_nonfinal_suspend(43; CHECK-NEXT:  entry:44; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[X:%.*]], 045; CHECK-NEXT:    br i1 [[CMP]], label [[AWAIT_SUSPEND:%.*]], label [[FINAL_SUSPEND:%.*]]46; CHECK:       await.suspend:47; CHECK-NEXT:    [[TMP0:%.*]] = call token @llvm.coro.save(ptr null)48; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.coro.suspend(token [[TMP0]], i1 false)49; CHECK-NEXT:    br label [[CORO_RET:%.*]]50; CHECK:       final.suspend:51; CHECK-NEXT:    [[TMP2:%.*]] = call token @llvm.coro.save(ptr null)52; CHECK-NEXT:    [[TMP3:%.*]] = call i8 @llvm.coro.suspend(token [[TMP2]], i1 false)53; CHECK-NEXT:    br label [[CORO_RET]]54; CHECK:       coro.ret:55; CHECK-NEXT:    ret void56;57entry:58  %cmp = icmp slt i32 %x, 059  br i1 %cmp, label %await.suspend, label %final.suspend60 61await.suspend:62  %0 = call token @llvm.coro.save(ptr null)63  %1 = call i8 @llvm.coro.suspend(token %0, i1 false)64  br label %coro.ret65 66final.suspend:67  %2 = call token @llvm.coro.save(ptr null)68  %3 = call i8 @llvm.coro.suspend(token %2, i1 false)69  br label %coro.ret70 71coro.ret:72  ret void73}74 75attributes #0 = { nomerge }76