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