[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / PowerPC / xray-conditional-return.ll
blob5851e92f7893857788ba3b170696282eb85338ec
1 ; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
3 define 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]]:
18 entry:
19   %cmp = icmp sgt i32 %a, %b
20   br i1 %cmp, label %return, label %if.end
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
32 if.end:
33   tail call void @Bar()
34   br label %return
36 return:
37   ret void
40 define 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]]:
55 entry:
56   %cmp = icmp slt i32 %a, %b
57   br i1 %cmp, label %return, label %if.end
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
69 if.end:
70   tail call void @Bar()
71   br label %return
73 return:
74   ret void
77 declare void @Bar()
79 attributes #0 = { "function-instrument"="xray-always" }