1; RUN: llc -filetype=asm -o - -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s 2; RUN: llc -filetype=asm -o - -mtriple=powerpc64le-unknown-linux-gnu \ 3; RUN: -relocation-model=pic < %s | FileCheck %s 4 5define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" { 6; CHECK-LABEL: foo: 7; CHECK-NEXT: .Lfunc_begin0: 8; CHECK-LABEL: .Ltmp0: 9; CHECK: b .Ltmp1 10; CHECK-NEXT: nop 11; CHECK-NEXT: std 0, -8(1) 12; CHECK-NEXT: mflr 0 13; CHECK-NEXT: bl __xray_FunctionEntry 14; CHECK-NEXT: nop 15; CHECK-NEXT: mtlr 0 16; CHECK-LABEL: .Ltmp1: 17 ret i32 0 18; CHECK-LABEL: .Ltmp2: 19; CHECK: blr 20; CHECK-NEXT: nop 21; CHECK-NEXT: std 0, -8(1) 22; CHECK-NEXT: mflr 0 23; CHECK-NEXT: bl __xray_FunctionExit 24; CHECK-NEXT: nop 25; CHECK-NEXT: mtlr 0 26} 27; CHECK-LABEL: xray_instr_map,"ao",@progbits,foo{{$}} 28; CHECK: .Lxray_sleds_start0: 29; CHECK-NEXT: .Ltmp3: 30; CHECK-NEXT: .quad .Ltmp0-.Ltmp3 31; CHECK-NEXT: .quad .Lfunc_begin0-(.Ltmp3+8) 32; CHECK-NEXT: .byte 0x00 33; CHECK-NEXT: .byte 0x01 34; CHECK-NEXT: .byte 0x02 35; CHECK-NEXT: .space 13 36; CHECK-NEXT: .Ltmp4: 37; CHECK-NEXT: .quad .Ltmp2-.Ltmp4 38; CHECK-NEXT: .quad .Lfunc_begin0-(.Ltmp4+8) 39; CHECK-NEXT: .byte 0x01 40; CHECK-NEXT: .byte 0x01 41; CHECK-NEXT: .byte 0x02 42; CHECK-NEXT: .space 13 43; CHECK-NEXT: .Lxray_sleds_end0: 44; CHECK-LABEL: xray_fn_idx,"awo",@progbits,foo{{$}} 45; CHECK: .p2align 4 46; CHECK-NEXT: .quad .Lxray_sleds_start0 47; CHECK-NEXT: .quad .Lxray_sleds_end0 48; CHECK-NEXT: .text 49