1; RUN: llc -filetype=asm -o - -mtriple=aarch64-linux-gnu < %s | FileCheck %s 2 3define 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-NEXT: .Ltmp2: 33; CHECK: .xword .Lxray_sled_0-.Ltmp2 34; CHECK: .Ltmp3: 35; CHECK-NEXT: .xword .Lxray_sled_1-.Ltmp3 36; CHECK-LABEL: Lxray_sleds_end0: 37; CHECK-LABEL: xray_fn_idx 38; CHECK: .xword .Lxray_sleds_start0 39; CHECK-NEXT: .xword .Lxray_sleds_end0 40 41define i32 @caller() nounwind noinline uwtable "function-instrument"="xray-always" { 42; CHECK: .p2align 2 43; CHECK-LABEL: Lxray_sled_2: 44; CHECK-NEXT: b #32 45; CHECK-NEXT: nop 46; CHECK-NEXT: nop 47; CHECK-NEXT: nop 48; CHECK-NEXT: nop 49; CHECK-NEXT: nop 50; CHECK-NEXT: nop 51; CHECK-NEXT: nop 52; CHECK-LABEL: .Ltmp4: 53; CHECK: .p2align 2 54; CHECK-LABEL: Lxray_sled_3: 55; CHECK-NEXT: b #32 56; CHECK-NEXT: nop 57; CHECK-NEXT: nop 58; CHECK-NEXT: nop 59; CHECK-NEXT: nop 60; CHECK-NEXT: nop 61; CHECK-NEXT: nop 62; CHECK-NEXT: nop 63; CHECK-LABEL: .Ltmp5: 64 %retval = tail call i32 @callee() 65; CHECK: b callee 66 ret i32 %retval 67} 68; CHECK-LABEL: xray_instr_map 69; CHECK-LABEL: Lxray_sleds_start1: 70; CHECK: .xword .Lxray_sled_2 71; CHECK: .xword .Lxray_sled_3 72; CHECK-LABEL: Lxray_sleds_end1: 73; CHECK: .section xray_fn_idx,{{.*}} 74; CHECK: .xword .Lxray_sleds_start1 75; CHECK-NEXT: .xword .Lxray_sleds_end1 76