]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/compiler-rt/lib/xray/xray_trampoline_powerpc64_asm.S
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm-project / compiler-rt / lib / xray / xray_trampoline_powerpc64_asm.S
1         .text
2         .abiversion 2
3         .globl  __xray_FunctionEntry
4         .p2align        4
5 __xray_FunctionEntry:
6         std 0, 16(1)
7         stdu 1, -408(1)
8 # Spill r3-r10, f1-f13, and vsr34-vsr45, which are parameter registers.
9 # If this appears to be slow, the caller needs to pass in number of generic,
10 # floating point, and vector parameters, so that we only spill those live ones.
11         std 3, 32(1)
12         ld 3, 400(1) # FuncId
13         std 4, 40(1)
14         std 5, 48(1)
15         std 6, 56(1)
16         std 7, 64(1)
17         std 8, 72(1)
18         std 9, 80(1)
19         std 10, 88(1)
20         addi 4, 1, 96
21         stxsdx 1, 0, 4
22         addi 4, 1, 104
23         stxsdx 2, 0, 4
24         addi 4, 1, 112
25         stxsdx 3, 0, 4
26         addi 4, 1, 120
27         stxsdx 4, 0, 4
28         addi 4, 1, 128
29         stxsdx 5, 0, 4
30         addi 4, 1, 136
31         stxsdx 6, 0, 4
32         addi 4, 1, 144
33         stxsdx 7, 0, 4
34         addi 4, 1, 152
35         stxsdx 8, 0, 4
36         addi 4, 1, 160
37         stxsdx 9, 0, 4
38         addi 4, 1, 168
39         stxsdx 10, 0, 4
40         addi 4, 1, 176
41         stxsdx 11, 0, 4
42         addi 4, 1, 184
43         stxsdx 12, 0, 4
44         addi 4, 1, 192
45         stxsdx 13, 0, 4
46         addi 4, 1, 200
47         stxvd2x 34, 0, 4
48         addi 4, 1, 216
49         stxvd2x 35, 0, 4
50         addi 4, 1, 232
51         stxvd2x 36, 0, 4
52         addi 4, 1, 248
53         stxvd2x 37, 0, 4
54         addi 4, 1, 264
55         stxvd2x 38, 0, 4
56         addi 4, 1, 280
57         stxvd2x 39, 0, 4
58         addi 4, 1, 296
59         stxvd2x 40, 0, 4
60         addi 4, 1, 312
61         stxvd2x 41, 0, 4
62         addi 4, 1, 328
63         stxvd2x 42, 0, 4
64         addi 4, 1, 344
65         stxvd2x 43, 0, 4
66         addi 4, 1, 360
67         stxvd2x 44, 0, 4
68         addi 4, 1, 376
69         stxvd2x 45, 0, 4
70         std 2, 392(1)
71         mflr 0
72         std 0, 400(1)
73
74         li 4, 0
75         bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
76         nop
77
78         addi 4, 1, 96
79         lxsdx 1, 0, 4
80         addi 4, 1, 104
81         lxsdx 2, 0, 4
82         addi 4, 1, 112
83         lxsdx 3, 0, 4
84         addi 4, 1, 120
85         lxsdx 4, 0, 4
86         addi 4, 1, 128
87         lxsdx 5, 0, 4
88         addi 4, 1, 136
89         lxsdx 6, 0, 4
90         addi 4, 1, 144
91         lxsdx 7, 0, 4
92         addi 4, 1, 152
93         lxsdx 8, 0, 4
94         addi 4, 1, 160
95         lxsdx 9, 0, 4
96         addi 4, 1, 168
97         lxsdx 10, 0, 4
98         addi 4, 1, 176
99         lxsdx 11, 0, 4
100         addi 4, 1, 184
101         lxsdx 12, 0, 4
102         addi 4, 1, 192
103         lxsdx 13, 0, 4
104         addi 4, 1, 200
105         lxvd2x 34, 0, 4
106         addi 4, 1, 216
107         lxvd2x 35, 0, 4
108         addi 4, 1, 232
109         lxvd2x 36, 0, 4
110         addi 4, 1, 248
111         lxvd2x 37, 0, 4
112         addi 4, 1, 264
113         lxvd2x 38, 0, 4
114         addi 4, 1, 280
115         lxvd2x 39, 0, 4
116         addi 4, 1, 296
117         lxvd2x 40, 0, 4
118         addi 4, 1, 312
119         lxvd2x 41, 0, 4
120         addi 4, 1, 328
121         lxvd2x 42, 0, 4
122         addi 4, 1, 344
123         lxvd2x 43, 0, 4
124         addi 4, 1, 360
125         lxvd2x 44, 0, 4
126         addi 4, 1, 376
127         lxvd2x 45, 0, 4
128         ld 0, 400(1)
129         mtlr 0
130         ld 2, 392(1)
131         ld 3, 32(1)
132         ld 4, 40(1)
133         ld 5, 48(1)
134         ld 6, 56(1)
135         ld 7, 64(1)
136         ld 8, 72(1)
137         ld 9, 80(1)
138         ld 10, 88(1)
139
140         addi 1, 1, 408
141         ld 0, 16(1)
142         blr
143
144         .globl  __xray_FunctionExit
145         .p2align        4
146 __xray_FunctionExit:
147         std 0, 16(1)
148         stdu 1, -256(1)
149 # Spill r3-r4, f1-f8, and vsr34-vsr41, which are return registers.
150 # If this appears to be slow, the caller needs to pass in number of generic,
151 # floating point, and vector parameters, so that we only spill those live ones.
152         std 3, 32(1)
153         ld 3, 248(1) # FuncId
154         std 4, 40(1)
155         addi 4, 1, 48
156         stxsdx 1, 0, 4
157         addi 4, 1, 56
158         stxsdx 2, 0, 4
159         addi 4, 1, 64
160         stxsdx 3, 0, 4
161         addi 4, 1, 72
162         stxsdx 4, 0, 4
163         addi 4, 1, 80
164         stxsdx 5, 0, 4
165         addi 4, 1, 88
166         stxsdx 6, 0, 4
167         addi 4, 1, 96
168         stxsdx 7, 0, 4
169         addi 4, 1, 104
170         stxsdx 8, 0, 4
171         addi 4, 1, 112
172         stxvd2x 34, 0, 4
173         addi 4, 1, 128
174         stxvd2x 35, 0, 4
175         addi 4, 1, 144
176         stxvd2x 36, 0, 4
177         addi 4, 1, 160
178         stxvd2x 37, 0, 4
179         addi 4, 1, 176
180         stxvd2x 38, 0, 4
181         addi 4, 1, 192
182         stxvd2x 39, 0, 4
183         addi 4, 1, 208
184         stxvd2x 40, 0, 4
185         addi 4, 1, 224
186         stxvd2x 41, 0, 4
187         std 2, 240(1)
188         mflr 0
189         std 0, 248(1)
190
191         li 4, 1
192         bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
193         nop
194
195         addi 4, 1, 48
196         lxsdx 1, 0, 4
197         addi 4, 1, 56
198         lxsdx 2, 0, 4
199         addi 4, 1, 64
200         lxsdx 3, 0, 4
201         addi 4, 1, 72
202         lxsdx 4, 0, 4
203         addi 4, 1, 80
204         lxsdx 5, 0, 4
205         addi 4, 1, 88
206         lxsdx 6, 0, 4
207         addi 4, 1, 96
208         lxsdx 7, 0, 4
209         addi 4, 1, 104
210         lxsdx 8, 0, 4
211         addi 4, 1, 112
212         lxvd2x 34, 0, 4
213         addi 4, 1, 128
214         lxvd2x 35, 0, 4
215         addi 4, 1, 144
216         lxvd2x 36, 0, 4
217         addi 4, 1, 160
218         lxvd2x 37, 0, 4
219         addi 4, 1, 176
220         lxvd2x 38, 0, 4
221         addi 4, 1, 192
222         lxvd2x 39, 0, 4
223         addi 4, 1, 208
224         lxvd2x 40, 0, 4
225         addi 4, 1, 224
226         lxvd2x 41, 0, 4
227         ld 0, 248(1)
228         mtlr 0
229         ld 2, 240(1)
230         ld 3, 32(1)
231         ld 4, 40(1)
232
233         addi 1, 1, 256
234         ld 0, 16(1)
235         blr