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" {
6 ; CHECK-LABEL: Lxray_sled_0:
9 ; CHECK-NEXT: Ltmp[[#]]:
11 ; CHECK-LABEL: Lxray_sled_1:
14 ; CHECK-NEXT: Ltmp[[#]]:
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" {
32 ; CHECK-LABEL: Lxray_sled_2:
35 ; CHECK-NEXT: Ltmp[[#]]:
37 ; CHECK-LABEL: Lxray_sled_3:
40 ; CHECK-NEXT: Ltmp[[#]]:
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:
61 ; CHECK-NEXT: Ltmp[[#]]:
63 ; CHECK-LABEL: Lxray_sled_5:
66 ; CHECK-NEXT: Ltmp[[#]]:
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