xref: /llvm-project/llvm/test/CodeGen/PowerPC/xray-conditional-return.ll (revision e6cdef187ed37468c14c53723c58cbde3e1341db)
1; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
2
3define void @Foo(i32 signext %a, i32 signext %b) #0 {
4; CHECK-LABEL: @Foo
5; CHECK:   cmpw
6; CHECK-NEXT:   ble 0, [[LABEL:\.[a-zA-Z0-9]+]]
7; CHECK-NEXT:   .p2align  3
8; CHECK-NEXT: {{\.[a-zA-Z0-9]+}}:
9; CHECK-NEXT:   blr
10; CHECK-NEXT:   nop
11; CHECK-NEXT:   std 0
12; CHECK-NEXT:   mflr 0
13; CHECK-NEXT:   bl __xray_FunctionExit
14; CHECK-NEXT:   nop
15; CHECK-NEXT:   mtlr 0
16; CHECK-NEXT:   blr
17; CHECK-NEXT: [[LABEL]]:
18entry:
19  %cmp = icmp sgt i32 %a, %b
20  br i1 %cmp, label %return, label %if.end
21
22; CHECK:      .p2align  3
23; CHECK-NEXT: {{\.[a-zA-Z0-9]+}}:
24; CHECK-NEXT:   blr
25; CHECK-NEXT:   nop
26; CHECK-NEXT:   std 0
27; CHECK-NEXT:   mflr 0
28; CHECK-NEXT:   bl __xray_FunctionExit
29; CHECK-NEXT:   nop
30; CHECK-NEXT:   mtlr 0
31; CHECK-NEXT:   blr
32if.end:
33  tail call void @Bar()
34  br label %return
35
36return:
37  ret void
38}
39
40define void @Foo2(i32 signext %a, i32 signext %b) #0 {
41; CHECK-LABEL: @Foo2
42; CHECK:   cmpw
43; CHECK-NEXT:   bge 0, [[LABEL:\.[a-zA-Z0-9]+]]
44; CHECK-NEXT:   .p2align  3
45; CHECK-NEXT: {{\.[a-zA-Z0-9]+}}:
46; CHECK-NEXT:   blr
47; CHECK-NEXT:   nop
48; CHECK-NEXT:   std 0
49; CHECK-NEXT:   mflr 0
50; CHECK-NEXT:   bl __xray_FunctionExit
51; CHECK-NEXT:   nop
52; CHECK-NEXT:   mtlr 0
53; CHECK-NEXT:   blr
54; CHECK-NEXT: [[LABEL]]:
55entry:
56  %cmp = icmp slt i32 %a, %b
57  br i1 %cmp, label %return, label %if.end
58
59; CHECK:      .p2align  3
60; CHECK-NEXT: {{\.[a-zA-Z0-9]+}}:
61; CHECK-NEXT:   blr
62; CHECK-NEXT:   nop
63; CHECK-NEXT:   std 0
64; CHECK-NEXT:   mflr 0
65; CHECK-NEXT:   bl __xray_FunctionExit
66; CHECK-NEXT:   nop
67; CHECK-NEXT:   mtlr 0
68; CHECK-NEXT:   blr
69if.end:
70  tail call void @Bar()
71  br label %return
72
73return:
74  ret void
75}
76
77declare void @Bar()
78
79attributes #0 = { "function-instrument"="xray-always" }
80