xref: /llvm-project/llvm/test/CodeGen/RISCV/machine-outliner-call.ll (revision 80df56e03b0455382cec51557bfc9f099d5c0a6f)
1; RUN: llc < %s -verify-machineinstrs -enable-machine-outliner | FileCheck %s
2
3target triple = "riscv64-unknown-linux-gnu"
4
5declare void @foo(i32, i32, i32, i32) minsize
6
7define void @fentry0(i1 %a) nounwind {
8; CHECK-LABEL: fentry0:
9; CHECK:       # %bb.1:
10; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]
11; CHECK-NEXT:    call foo
12; CHECK-LABEL: .LBB0_2:
13; CHECK-NEXT:    tail OUTLINED_FUNCTION_[[BB2:[0-9]+]]
14entry:
15  br i1 %a, label %if.then, label %if.end
16if.then:
17  call void @foo(i32 1, i32 2, i32 3, i32 4)
18  br label %if.end
19if.end:
20  call void @foo(i32 5, i32 6, i32 7, i32 8)
21  ret void
22}
23
24define void @fentry1(i1 %a) nounwind {
25; CHECK-LABEL: fentry1:
26; CHECK:       # %bb.1:
27; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]
28; CHECK-NEXT:    call foo
29; CHECK-LABEL: .LBB1_2:
30; CHECK-NEXT:    tail OUTLINED_FUNCTION_[[BB2:[0-9]+]]
31entry:
32  br i1 %a, label %if.then, label %if.end
33if.then:
34  call void @foo(i32 1, i32 2, i32 3, i32 4)
35  br label %if.end
36if.end:
37  call void @foo(i32 5, i32 6, i32 7, i32 8)
38  ret void
39}
40
41define void @fentry2(i1 %a) nounwind {
42; CHECK-LABEL: fentry2:
43; CHECK:       # %bb.1:
44; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]
45; CHECK-NEXT:    call foo
46; CHECK-LABEL: .LBB2_2:
47; CHECK-NEXT:    tail OUTLINED_FUNCTION_[[BB2:[0-9]+]]
48entry:
49  br i1 %a, label %if.then, label %if.end
50if.then:
51  call void @foo(i32 1, i32 2, i32 3, i32 4)
52  br label %if.end
53if.end:
54  call void @foo(i32 5, i32 6, i32 7, i32 8)
55  ret void
56}
57
58; CHECK:       OUTLINED_FUNCTION_[[BB2]]:
59; CHECK:       li      a0, 5
60; CHECK-NEXT:  li      a1, 6
61; CHECK-NEXT:  li      a2, 7
62; CHECK-NEXT:  li      a3, 8
63; CHECK-NEXT:  call foo
64
65; CHECK:       OUTLINED_FUNCTION_[[BB1]]:
66; CHECK:       li      a0, 1
67; CHECK-NEXT:  li      a1, 2
68; CHECK-NEXT:  li      a2, 3
69; CHECK-NEXT:  li      a3, 4
70; CHECK-NEXT:  jr      t0
71