xref: /llvm-project/llvm/test/CodeGen/SystemZ/xray.ll (revision 4a37799a489d80e505e3e20722570c47673476be)
1; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck --check-prefixes=CHECK,NOVECTOR %s
2; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z15 | FileCheck --check-prefixes=CHECK,VECTOR %s
3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z15 -mattr=+soft-float | FileCheck --check-prefixes=CHECK,NOVECTOR %s
4
5
6define signext i32 @foo() "function-instrument"="xray-always" {
7; CHECK-LABEL: .Lxray_sled_0:
8; CHECK:         j	.Ltmp[[#l:]]
9; CHECK:         bcr	0, %r0
10; CHECK:         llilf	%r2, 0
11; NOVECTOR:      brasl	%r14, __xray_FunctionEntry@PLT
12; VECTOR:        brasl	%r14, __xray_FunctionEntryVec@PLT
13; CHECK:       .Ltmp[[#l]]:
14  ret i32 0
15; CHECK-LABEL: .Lxray_sled_1:
16; CHECK:         br	%r14
17; CHECK:         bc	0, 0
18; CHECK:         llilf	%r2, 0
19; NOVECtOR:      j	__xray_FunctionExit@PLT
20; VECTOR:        j	__xray_FunctionExitVec@PLT
21}
22
23; CHECK: 	.section	xray_instr_map,"ao",@progbits,foo
24; CHECK: .Lxray_sleds_start0:
25; CHECK: [[TMP1:.Ltmp[0-9]+]]:
26; CHECK: 	.quad	.Lxray_sled_0-[[TMP1]]
27; CHECK: 	.quad	.Lfunc_begin0-([[TMP1]]+8)
28; CHECK: 	.byte	0x00
29; CHECK: 	.byte	0x01
30; CHECK: 	.byte	0x02
31; CHECK:  .space	13
32; CHECK: [[TMP2:.Ltmp[0-9]+]]:
33; CHECK: 	.quad	.Lxray_sled_1-[[TMP2]]
34; CHECK: 	.quad	.Lfunc_begin0-([[TMP2]]+8)
35; CHECK: 	.byte	0x01
36; CHECK: 	.byte	0x01
37; CHECK: 	.byte	0x02
38; CHECK: 	.space	13
39; CHECK: .Lxray_sleds_end0:
40; CHECK: 	.section	xray_fn_idx,"ao",@progbits,foo
41; CHECK: 	.p2align	4
42; CHECK: .Lxray_fn_idx0:
43; CHECK: 	.quad	.Lxray_sleds_start0-.Lxray_fn_idx0
44; CHECK: 	.quad	2
45