xref: /llvm-project/llvm/test/Bitcode/callbr.ll (revision e45cf479231fc144b4e1eb8b3e3bd2f578b6907d)
1; RUN:  llvm-dis < %s.bc | FileCheck %s
2; callbr.ll.bc was generated by passing this file to llvm-as.
3
4; RUN: llvm-as < %s | llvm-dis | FileCheck %s
5
6define i32 @test_asm_goto(i32 %x){
7entry:
8; CHECK: callbr void asm "", "r,!i"(i32 %x)
9; CHECK-NEXT: to label %normal [label %fail]
10  callbr void asm "", "r,!i"(i32 %x) to label %normal [label %fail]
11normal:
12  ret i32 1
13fail:
14  ret i32 0
15}
16
17define i32 @test_asm_goto2(i32 %x){
18entry:
19; CHECK: callbr void asm "", "r,!i,!i"(i32 %x)
20; CHECK-NEXT: to label %normal [label %fail, label %fail2]
21  callbr void asm "", "r,!i,!i"(i32 %x) to label %normal [label %fail, label %fail2]
22normal:
23  ret i32 1
24fail:
25  ret i32 0
26fail2:
27  ret i32 2
28}
29
30define i32 @test_asm_goto3(i32 %x){
31entry:
32; CHECK:     callbr void asm "", "r,i,!i"(i32 %x, ptr blockaddress(@test_asm_goto3, %unrelated))
33; CHECK-NEXT: to label %normal [label %fail]
34  callbr void asm "", "r,i,!i"(i32 %x, i8* blockaddress(@test_asm_goto3, %unrelated)) to label %normal [label %fail]
35normal:
36  ret i32 1
37fail:
38  ret i32 0
39unrelated:
40  ret i32 2
41}
42