blob: c52ccf9356bc52833ea1ffa1117c11052d80bfce [file] [log] [blame]
Dean Michael Berris52735fc2016-07-14 04:06:33 +00001; RUN: llc -filetype=asm -o - -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
Kuba Mracek06995e82016-11-23 02:07:04 +00002; RUN: llc -filetype=asm -o - -mtriple=x86_64-darwin-unknown < %s | FileCheck %s
Dean Michael Berris52735fc2016-07-14 04:06:33 +00003
4define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
Dean Michael Berris7e9abea2016-08-04 07:37:28 +00005; CHECK: .p2align 1, 0x90
Dean Michael Berris52735fc2016-07-14 04:06:33 +00006; CHECK-LABEL: Lxray_sled_0:
Dean Michael Berris52735fc2016-07-14 04:06:33 +00007; CHECK-NEXT: .ascii "\353\t"
8; CHECK-NEXT: nopw 512(%rax,%rax)
9; CHECK-LABEL: Ltmp0:
10 ret i32 0
Dean Michael Berris7e9abea2016-08-04 07:37:28 +000011; CHECK: .p2align 1, 0x90
Dean Michael Berris52735fc2016-07-14 04:06:33 +000012; CHECK-LABEL: Lxray_sled_1:
13; CHECK-NEXT: retq
14; CHECK-NEXT: nopw %cs:512(%rax,%rax)
15}
Dean Michael Berris1dd1ca92016-08-19 04:44:30 +000016; CHECK: .p2align 4, 0x90
Kuba Mracek06995e82016-11-23 02:07:04 +000017; CHECK-NEXT: .quad {{.*}}xray_synthetic_0
18; CHECK-NEXT: .section {{.*}}xray_instr_map
Dean Michael Berris1dd1ca92016-08-19 04:44:30 +000019; CHECK-LABEL: Lxray_synthetic_0:
Kuba Mracek06995e82016-11-23 02:07:04 +000020; CHECK: .quad {{.*}}xray_sled_0
21; CHECK: .quad {{.*}}xray_sled_1
Dean Michael Berris047669f2016-08-31 05:20:08 +000022
23; We test multiple returns in a single function to make sure we're getting all
24; of them with XRay instrumentation.
25define i32 @bar(i32 %i) nounwind noinline uwtable "function-instrument"="xray-always" {
26; CHECK: .p2align 1, 0x90
27; CHECK-LABEL: Lxray_sled_2:
28; CHECK-NEXT: .ascii "\353\t"
29; CHECK-NEXT: nopw 512(%rax,%rax)
30; CHECK-LABEL: Ltmp1:
31Test:
32 %cond = icmp eq i32 %i, 0
33 br i1 %cond, label %IsEqual, label %NotEqual
34IsEqual:
35 ret i32 0
36; CHECK: .p2align 1, 0x90
37; CHECK-LABEL: Lxray_sled_3:
38; CHECK-NEXT: retq
39; CHECK-NEXT: nopw %cs:512(%rax,%rax)
40NotEqual:
41 ret i32 1
42; CHECK: .p2align 1, 0x90
43; CHECK-LABEL: Lxray_sled_4:
44; CHECK-NEXT: retq
45; CHECK-NEXT: nopw %cs:512(%rax,%rax)
46}
47; CHECK: .p2align 4, 0x90
Kuba Mracek06995e82016-11-23 02:07:04 +000048; CHECK-NEXT: .quad {{.*}}xray_synthetic_1
49; CHECK-NEXT: .section {{.*}}xray_instr_map
Dean Michael Berris047669f2016-08-31 05:20:08 +000050; CHECK-LABEL: Lxray_synthetic_1:
Kuba Mracek06995e82016-11-23 02:07:04 +000051; CHECK: .quad {{.*}}xray_sled_2
52; CHECK: .quad {{.*}}xray_sled_3
53; CHECK: .quad {{.*}}xray_sled_4