Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AArch64 / xray-attribute-instrumentation.ll
bloba1017891db7d89146e7ba542902d39f2e8b950ec
1 ; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s -check-prefixes=CHECK,CHECK-LINUX
2 ; RUN: llc -mtriple=aarch64-apple-darwin      < %s | FileCheck %s -check-prefixes=CHECK,CHECK-MACOS
4 define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
5 ; CHECK-LABEL: foo:
6 ; CHECK-LABEL: Lxray_sled_0:
7 ; CHECK-NEXT:  b  #32
8 ; CHECK-COUNT-7:  nop
9 ; CHECK-NEXT:  Ltmp[[#]]:
10   ret i32 0
11 ; CHECK-LABEL: Lxray_sled_1:
12 ; CHECK-NEXT:  b  #32
13 ; CHECK-COUNT-7:  nop
14 ; CHECK-NEXT:  Ltmp[[#]]:
15 ; CHECK-NEXT:  ret
18 ; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,foo{{$}}
19 ; CHECK-LINUX-LABEL: Lxray_sleds_start0:
20 ; CHECK-LINUX:         .xword .Lxray_sled_0
21 ; CHECK-LINUX:         .xword .Lxray_sled_1
22 ; CHECK-LINUX-LABEL: Lxray_sleds_end0:
24 ; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}
25 ; CHECK-MACOS-LABEL: lxray_sleds_start0:
26 ; CHECK-MACOS:         .quad Lxray_sled_0
27 ; CHECK-MACOS:         .quad Lxray_sled_1
28 ; CHECK-MACOS-LABEL: Lxray_sleds_end0:
30 define i32 @bar() nounwind noinline uwtable "function-instrument"="xray-never" "function-instrument"="xray-always" {
31 ; CHECK-LABEL: bar:
32 ; CHECK-LABEL: Lxray_sled_2:
33 ; CHECK-NEXT:  b  #32
34 ; CHECK-COUNT-7:  nop
35 ; CHECK-NEXT:  Ltmp[[#]]:
36   ret i32 0
37 ; CHECK-LABEL: Lxray_sled_3:
38 ; CHECK-NEXT:  b  #32
39 ; CHECK-COUNT-7:  nop
40 ; CHECK-NEXT:  Ltmp[[#]]:
41 ; CHECK-NEXT:  ret
44 ; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,bar{{$}}
45 ; CHECK-LINUX-LABEL: Lxray_sleds_start1:
46 ; CHECK-LINUX:         .xword .Lxray_sled_2
47 ; CHECK-LINUX:         .xword .Lxray_sled_3
48 ; CHECK-LINUX-LABEL: Lxray_sleds_end1:
50 ; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}
51 ; CHECK-MACOS-LABEL: lxray_sleds_start1:
52 ; CHECK-MACOS:         .quad Lxray_sled_2
53 ; CHECK-MACOS:         .quad Lxray_sled_3
54 ; CHECK-MACOS-LABEL: Lxray_sleds_end1:
56 define i32 @instrumented() nounwind noinline uwtable "xray-instruction-threshold"="1" {
57 ; CHECK-LABEL: instrumented:
58 ; CHECK-LABEL: Lxray_sled_4:
59 ; CHECK-NEXT:  b  #32
60 ; CHECK-COUNT-7:  nop
61 ; CHECK-NEXT:  Ltmp[[#]]:
62   ret i32 0
63 ; CHECK-LABEL: Lxray_sled_5:
64 ; CHECK-NEXT:  b  #32
65 ; CHECK-COUNT-7:  nop
66 ; CHECK-NEXT:  Ltmp[[#]]:
67 ; CHECK-NEXT:  ret
70 ; CHECK-LINUX-LABEL: .section xray_instr_map,"ao",@progbits,instrumented{{$}}
71 ; CHECK-LINUX-LABEL: Lxray_sleds_start2:
72 ; CHECK-LINUX:         .xword .Lxray_sled_4
73 ; CHECK-LINUX:         .xword .Lxray_sled_5
74 ; CHECK-LINUX-LABEL: Lxray_sleds_end2:
76 ; CHECK-MACOS-LABEL: .section __DATA,xray_instr_map,regular,live_support{{$}}
77 ; CHECK-MACOS-LABEL: lxray_sleds_start2:
78 ; CHECK-MACOS:         .quad Lxray_sled_4
79 ; CHECK-MACOS:         .quad Lxray_sled_5
80 ; CHECK-MACOS-LABEL: Lxray_sleds_end2:
82 define i32 @not_instrumented() nounwind noinline uwtable "xray-instruction-threshold"="1" "function-instrument"="xray-never" {
83 ; CHECK-LABEL: not_instrumented
84 ; CHECK-NOT: Lxray_sled_6
85   ret i32 0
86 ; CHECK:  ret