xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stackmap-fast-isel.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7                             | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -fast-isel -fast-isel-abort=1 | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .section  __LLVM_STACKMAPS,__llvm_stackmaps
5*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  __LLVM_StackMaps:
6*9880d681SAndroid Build Coastguard Worker; Header
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte 1
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte 0
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short 0
10*9880d681SAndroid Build Coastguard Worker; Num Functions
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long 4
12*9880d681SAndroid Build Coastguard Worker; Num LargeConstants
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long 3
14*9880d681SAndroid Build Coastguard Worker; Num Callsites
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long 7
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; Functions and stack size
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad _constantargs
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad 8
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad _liveConstant
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad 8
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad _directFrameIdx
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad 40
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad _longid
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad 8
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker; Large Constants
28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad   2147483648
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad   4294967295
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad   4294967296
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker; Callsites
33*9880d681SAndroid Build Coastguard Worker; Constant arguments
34*9880d681SAndroid Build Coastguard Worker;
35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad   1
36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   L{{.*}}-_constantargs
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  12
39*9880d681SAndroid Build Coastguard Worker; SmallConstant
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   -1
44*9880d681SAndroid Build Coastguard Worker; SmallConstant
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   -1
49*9880d681SAndroid Build Coastguard Worker; SmallConstant
50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   65536
54*9880d681SAndroid Build Coastguard Worker; SmallConstant
55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   2000000000
59*9880d681SAndroid Build Coastguard Worker; SmallConstant
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   2147483647
64*9880d681SAndroid Build Coastguard Worker; SmallConstant
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   -1
69*9880d681SAndroid Build Coastguard Worker; SmallConstant
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   -1
74*9880d681SAndroid Build Coastguard Worker; SmallConstant
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   0
79*9880d681SAndroid Build Coastguard Worker; LargeConstant at index 0
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   5
81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   0
84*9880d681SAndroid Build Coastguard Worker; LargeConstant at index 1
85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   5
86*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   1
89*9880d681SAndroid Build Coastguard Worker; LargeConstant at index 2
90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   5
91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   2
94*9880d681SAndroid Build Coastguard Worker; SmallConstant
95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   -1
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Workerdefine void @constantargs() {
101*9880d681SAndroid Build Coastguard Workerentry:
102*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 15, i16 65535, i16 -1, i32 65536, i32 2000000000, i32 2147483647, i32 -1, i32 4294967295, i32 4294967296, i64 2147483648, i64 4294967295, i64 4294967296, i64 -1)
103*9880d681SAndroid Build Coastguard Worker  ret void
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Worker; Map a constant value.
107*9880d681SAndroid Build Coastguard Worker;
108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_liveConstant
109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short 0
110*9880d681SAndroid Build Coastguard Worker; 1 location
111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short 1
112*9880d681SAndroid Build Coastguard Worker; Loc 0: SmallConstant
113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   4
114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte   8
115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   33
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine void @liveConstant() {
119*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 5, i32 33)
120*9880d681SAndroid Build Coastguard Worker  ret void
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Worker; Directly map an alloca's address.
124*9880d681SAndroid Build Coastguard Worker;
125*9880d681SAndroid Build Coastguard Worker; Callsite 16
126*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_directFrameIdx
127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short 0
128*9880d681SAndroid Build Coastguard Worker; 1 location
129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short	1
130*9880d681SAndroid Build Coastguard Worker; Loc 0: Direct RBP - ofs
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte	2
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte	8
133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short	6
134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Workerdefine void @directFrameIdx() {
137*9880d681SAndroid Build Coastguard Workerentry:
138*9880d681SAndroid Build Coastguard Worker  %metadata1 = alloca i64, i32 3, align 8
139*9880d681SAndroid Build Coastguard Worker  store i64 11, i64* %metadata1
140*9880d681SAndroid Build Coastguard Worker  store i64 12, i64* %metadata1
141*9880d681SAndroid Build Coastguard Worker  store i64 13, i64* %metadata1
142*9880d681SAndroid Build Coastguard Worker  call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 0, i64* %metadata1)
143*9880d681SAndroid Build Coastguard Worker  ret void
144*9880d681SAndroid Build Coastguard Worker}
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Worker; Test a 64-bit ID.
147*9880d681SAndroid Build Coastguard Worker;
148*9880d681SAndroid Build Coastguard Worker; CHECK:        .quad 4294967295
149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_longid
150*9880d681SAndroid Build Coastguard Worker; CHECK:        .quad 4294967296
151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_longid
152*9880d681SAndroid Build Coastguard Worker; CHECK:        .quad 9223372036854775807
153*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_longid
154*9880d681SAndroid Build Coastguard Worker; CHECK:        .quad -1
155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_longid
156*9880d681SAndroid Build Coastguard Workerdefine void @longid() {
157*9880d681SAndroid Build Coastguard Workerentry:
158*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967295, i32 0)
159*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967296, i32 0)
160*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9223372036854775807, i32 0)
161*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 -1, i32 0)
162*9880d681SAndroid Build Coastguard Worker  ret void
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.experimental.stackmap(i64, i32, ...)
166