brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 487a716 Raw
33 lines · plain
1; RUN: llvm-as < %s | llvm-dis | FileCheck %s2 3declare amdgpu_cs_chain void @callee() nounwind4declare void @llvm.amdgcn.cs.chain.p0.i64.i32.i32(ptr, i64, i32, i32, i32 immarg, ...)5declare void @llvm.amdgcn.unreachable()6declare void @llvm.dbg.value(metadata, metadata, metadata)7 8; @llvm.amdgcn.unreachable is legal after @llvm.amdgcn.cs.chain9; CHECK: define amdgpu_cs_chain void @test_cc_chain_unreachable(i32 %val)10define amdgpu_cs_chain void @test_cc_chain_unreachable(i32 %val) {11tail.block:12  %.cond = icmp ne i32 %val, 013  br i1 %.cond, label %chain.block, label %UnifiedReturnBlock14 15chain.block:16  call void (ptr, i64, i32, i32, i32, ...) @llvm.amdgcn.cs.chain.p0.i64.i32.i32(ptr @callee, i64 -1, i32 inreg 1, i32 2, i32 1, i32 inreg 32, i32 inreg -1, ptr @callee)17  call void @llvm.amdgcn.unreachable()18  br label %UnifiedReturnBlock19 20UnifiedReturnBlock:21  ret void22}23 24; debug instructions should be ignored25; CHECK: define amdgpu_cs_chain void @test_cc_chain_unreachable_debug(i32 %val)26define amdgpu_cs_chain void @test_cc_chain_unreachable_debug(i32 %val) {27init:28  call void (ptr, i64, i32, i32, i32, ...) @llvm.amdgcn.cs.chain.p0.i64.i32.i32(ptr @callee, i64 -1, i32 inreg 1, i32 2, i32 1, i32 inreg 32, i32 inreg -1, ptr @callee)29  call void @llvm.dbg.value(metadata i32 0, metadata !{}, metadata !DIExpression())30  call void @llvm.amdgcn.unreachable()31  ret void32}33