1 ; RUN: llc -filetype=asm -o - -mtriple=aarch64-linux-gnu < %s | FileCheck %s 2 3 define i32 @callee() nounwind noinline uwtable "function-instrument"="xray-always" { 4 ; CHECK: .p2align 2 5 ; CHECK-LABEL: .Lxray_sled_0: 6 ; CHECK-NEXT: b #32 7 ; CHECK-NEXT: nop 8 ; CHECK-NEXT: nop 9 ; CHECK-NEXT: nop 10 ; CHECK-NEXT: nop 11 ; CHECK-NEXT: nop 12 ; CHECK-NEXT: nop 13 ; CHECK-NEXT: nop 14 ; CHECK-LABEL: .Ltmp0: 15 ret i32 0 16 ; CHECK-NEXT: mov w0, wzr 17 ; CHECK-NEXT: .p2align 2 18 ; CHECK-LABEL: .Lxray_sled_1: 19 ; CHECK-NEXT: b #32 20 ; CHECK-NEXT: nop 21 ; CHECK-NEXT: nop 22 ; CHECK-NEXT: nop 23 ; CHECK-NEXT: nop 24 ; CHECK-NEXT: nop 25 ; CHECK-NEXT: nop 26 ; CHECK-NEXT: nop 27 ; CHECK-LABEL: .Ltmp1: 28 ; CHECK-NEXT: ret 29 } 30 ; CHECK-LABEL: xray_instr_map 31 ; CHECK-LABEL: Lxray_sleds_start0: 32 ; CHECK: .xword .Lxray_sled_0 33 ; CHECK: .xword .Lxray_sled_1 34 ; CHECK-LABEL: Lxray_sleds_end0: 35 ; CHECK-LABEL: xray_fn_idx 36 ; CHECK: .xword .Lxray_sleds_start0 37 ; CHECK-NEXT: .xword .Lxray_sleds_end0 38 39 define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" { 40 ; CHECK: .p2align 2 41 ; CHECK-LABEL: Lxray_sled_2: 42 ; CHECK-NEXT: b #32 43 ; CHECK-NEXT: nop 44 ; CHECK-NEXT: nop 45 ; CHECK-NEXT: nop 46 ; CHECK-NEXT: nop 47 ; CHECK-NEXT: nop 48 ; CHECK-NEXT: nop 49 ; CHECK-NEXT: nop 50 ; CHECK-LABEL: .Ltmp2: 51 ; CHECK: .p2align 2 52 ; CHECK-LABEL: Lxray_sled_3: 53 ; CHECK-NEXT: b #32 54 ; CHECK-NEXT: nop 55 ; CHECK-NEXT: nop 56 ; CHECK-NEXT: nop 57 ; CHECK-NEXT: nop 58 ; CHECK-NEXT: nop 59 ; CHECK-NEXT: nop 60 ; CHECK-NEXT: nop 61 ; CHECK-LABEL: .Ltmp3: 62 %retval = tail call i32 @callee() 63 ; CHECK: b callee 64 ret i32 %retval 65 } 66 ; CHECK-LABEL: xray_instr_map 67 ; CHECK-LABEL: Lxray_sleds_start1: 68 ; CHECK: .xword .Lxray_sled_2 69 ; CHECK: .xword .Lxray_sled_3 70 ; CHECK-LABEL: Lxray_sleds_end1: 71 ; CHECK: .section xray_fn_idx,{{.*}} 72 ; CHECK: .xword .Lxray_sleds_start1 73 ; CHECK-NEXT: .xword .Lxray_sleds_end1 74