blob: 7dfab650fbc115901f432e2a739a2aabe5c116d0 [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
2
3define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {
Dean Michael Berris7e9abea2016-08-04 07:37:28 +00004; CHECK: .p2align 1, 0x90
Dean Michael Berris52735fc2016-07-14 04:06:33 +00005; CHECK-LABEL: Lxray_sled_0:
Dean Michael Berris52735fc2016-07-14 04:06:33 +00006; CHECK-NEXT: .ascii "\353\t"
7; CHECK-NEXT: nopw 512(%rax,%rax)
8; CHECK-LABEL: Ltmp0:
9 ret i32 0
Dean Michael Berris7e9abea2016-08-04 07:37:28 +000010; CHECK: .p2align 1, 0x90
Dean Michael Berris52735fc2016-07-14 04:06:33 +000011; CHECK-LABEL: Lxray_sled_1:
12; CHECK-NEXT: retq
13; CHECK-NEXT: nopw %cs:512(%rax,%rax)
14}
Dean Michael Berris1dd1ca92016-08-19 04:44:30 +000015; CHECK: .p2align 4, 0x90
16; CHECK-NEXT: .quad .Lxray_synthetic_0
17; CHECK-NEXT: .section xray_instr_map,{{.*}}
18; CHECK-LABEL: Lxray_synthetic_0:
19; CHECK: .quad .Lxray_sled_0
20; CHECK: .quad .Lxray_sled_1
Dean Michael Berris047669f2016-08-31 05:20:08 +000021
22; We test multiple returns in a single function to make sure we're getting all
23; of them with XRay instrumentation.
24define i32 @bar(i32 %i) nounwind noinline uwtable "function-instrument"="xray-always" {
25; CHECK: .p2align 1, 0x90
26; CHECK-LABEL: Lxray_sled_2:
27; CHECK-NEXT: .ascii "\353\t"
28; CHECK-NEXT: nopw 512(%rax,%rax)
29; CHECK-LABEL: Ltmp1:
30Test:
31 %cond = icmp eq i32 %i, 0
32 br i1 %cond, label %IsEqual, label %NotEqual
33IsEqual:
34 ret i32 0
35; CHECK: .p2align 1, 0x90
36; CHECK-LABEL: Lxray_sled_3:
37; CHECK-NEXT: retq
38; CHECK-NEXT: nopw %cs:512(%rax,%rax)
39NotEqual:
40 ret i32 1
41; CHECK: .p2align 1, 0x90
42; CHECK-LABEL: Lxray_sled_4:
43; CHECK-NEXT: retq
44; CHECK-NEXT: nopw %cs:512(%rax,%rax)
45}
46; CHECK: .p2align 4, 0x90
47; CHECK-NEXT: .quad .Lxray_synthetic_1
48; CHECK-NEXT: .section xray_instr_map,{{.*}}
49; CHECK-LABEL: Lxray_synthetic_1:
50; CHECK: .quad .Lxray_sled_2
51; CHECK: .quad .Lxray_sled_3
52; CHECK: .quad .Lxray_sled_4