diff options
Diffstat (limited to 'llvm/test/CodeGen/NVPTX/branch-fold.ll')
-rw-r--r-- | llvm/test/CodeGen/NVPTX/branch-fold.ll | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/NVPTX/branch-fold.ll b/llvm/test/CodeGen/NVPTX/branch-fold.ll new file mode 100644 index 00000000000..2b9cd0a35d9 --- /dev/null +++ b/llvm/test/CodeGen/NVPTX/branch-fold.ll @@ -0,0 +1,40 @@ +; RUN: llc < %s -march=nvptx64 -mcpu=sm_35 -disable-cgp | FileCheck %s +; Disable CGP which also folds branches, so that only BranchFolding is under +; the spotlight. + +target datalayout = "e-i64:64-v16:16-v32:32-n16:32:64" +target triple = "nvptx64-nvidia-cuda" + +define void @foo(i32 %x, float* %output) { +; CHECK-LABEL: .visible .func foo( +; CHECK-NOT: bra.uni +; CHECK-NOT: LBB0_ + %1 = icmp eq i32 %x, 1 + br i1 %1, label %then, label %else + +then: + br label %merge + +else: + br label %merge + +merge: + store float 2.0, float* %output + ret void +} + +; PR24299. no crash +define ptx_kernel void @hoge() #0 { +; CHECK-LABEL: .visible .entry hoge( +bb: + br i1 undef, label %bb1, label %bb4 + +bb1: ; preds = %bb1, %bb + %tmp = phi i64 [ %tmp2, %bb1 ], [ undef, %bb ] + %tmp2 = add nsw i64 %tmp, 1 + %tmp3 = icmp sle i64 %tmp, 0 + br i1 %tmp3, label %bb1, label %bb4 + +bb4: ; preds = %bb4, %bb1, %bb + br label %bb4 +} |