]> Cypherpunks.ru repositories - gostls13.git/blob - src/math/stubs_s390x.s
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / src / math / stubs_s390x.s
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 #include "textflag.h"
6
7 TEXT ·archLog10(SB), NOSPLIT, $0
8         MOVD ·log10vectorfacility+0x00(SB), R1
9         BR   (R1)
10
11 TEXT ·log10TrampolineSetup(SB), NOSPLIT, $0
12         MOVB   ·hasVX(SB), R1
13         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
14         MOVD   $·log10vectorfacility+0x00(SB), R1
15         MOVD   $·log10(SB), R2
16         MOVD   R2, 0(R1)
17         BR     ·log10(SB)
18
19 vectorimpl:
20         MOVD $·log10vectorfacility+0x00(SB), R1
21         MOVD $·log10Asm(SB), R2
22         MOVD R2, 0(R1)
23         BR   ·log10Asm(SB)
24
25 GLOBL ·log10vectorfacility+0x00(SB), NOPTR, $8
26 DATA ·log10vectorfacility+0x00(SB)/8, $·log10TrampolineSetup(SB)
27
28 TEXT ·archCos(SB), NOSPLIT, $0
29         MOVD ·cosvectorfacility+0x00(SB), R1
30         BR   (R1)
31
32 TEXT ·cosTrampolineSetup(SB), NOSPLIT, $0
33         MOVB   ·hasVX(SB), R1
34         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
35         MOVD   $·cosvectorfacility+0x00(SB), R1
36         MOVD   $·cos(SB), R2
37         MOVD   R2, 0(R1)
38         BR     ·cos(SB)
39
40 vectorimpl:
41         MOVD $·cosvectorfacility+0x00(SB), R1
42         MOVD $·cosAsm(SB), R2
43         MOVD R2, 0(R1)
44         BR   ·cosAsm(SB)
45
46 GLOBL ·cosvectorfacility+0x00(SB), NOPTR, $8
47 DATA ·cosvectorfacility+0x00(SB)/8, $·cosTrampolineSetup(SB)
48
49 TEXT ·archCosh(SB), NOSPLIT, $0
50         MOVD ·coshvectorfacility+0x00(SB), R1
51         BR   (R1)
52
53 TEXT ·coshTrampolineSetup(SB), NOSPLIT, $0
54         MOVB   ·hasVX(SB), R1
55         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
56         MOVD   $·coshvectorfacility+0x00(SB), R1
57         MOVD   $·cosh(SB), R2
58         MOVD   R2, 0(R1)
59         BR     ·cosh(SB)
60
61 vectorimpl:
62         MOVD $·coshvectorfacility+0x00(SB), R1
63         MOVD $·coshAsm(SB), R2
64         MOVD R2, 0(R1)
65         BR   ·coshAsm(SB)
66
67 GLOBL ·coshvectorfacility+0x00(SB), NOPTR, $8
68 DATA ·coshvectorfacility+0x00(SB)/8, $·coshTrampolineSetup(SB)
69
70 TEXT ·archSin(SB), NOSPLIT, $0
71         MOVD ·sinvectorfacility+0x00(SB), R1
72         BR   (R1)
73
74 TEXT ·sinTrampolineSetup(SB), NOSPLIT, $0
75         MOVB   ·hasVX(SB), R1
76         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
77         MOVD   $·sinvectorfacility+0x00(SB), R1
78         MOVD   $·sin(SB), R2
79         MOVD   R2, 0(R1)
80         BR     ·sin(SB)
81
82 vectorimpl:
83         MOVD $·sinvectorfacility+0x00(SB), R1
84         MOVD $·sinAsm(SB), R2
85         MOVD R2, 0(R1)
86         BR   ·sinAsm(SB)
87
88 GLOBL ·sinvectorfacility+0x00(SB), NOPTR, $8
89 DATA ·sinvectorfacility+0x00(SB)/8, $·sinTrampolineSetup(SB)
90
91 TEXT ·archSinh(SB), NOSPLIT, $0
92         MOVD ·sinhvectorfacility+0x00(SB), R1
93         BR   (R1)
94
95 TEXT ·sinhTrampolineSetup(SB), NOSPLIT, $0
96         MOVB   ·hasVX(SB), R1
97         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
98         MOVD   $·sinhvectorfacility+0x00(SB), R1
99         MOVD   $·sinh(SB), R2
100         MOVD   R2, 0(R1)
101         BR     ·sinh(SB)
102
103 vectorimpl:
104         MOVD $·sinhvectorfacility+0x00(SB), R1
105         MOVD $·sinhAsm(SB), R2
106         MOVD R2, 0(R1)
107         BR   ·sinhAsm(SB)
108
109 GLOBL ·sinhvectorfacility+0x00(SB), NOPTR, $8
110 DATA ·sinhvectorfacility+0x00(SB)/8, $·sinhTrampolineSetup(SB)
111
112 TEXT ·archTanh(SB), NOSPLIT, $0
113         MOVD ·tanhvectorfacility+0x00(SB), R1
114         BR   (R1)
115
116 TEXT ·tanhTrampolineSetup(SB), NOSPLIT, $0
117         MOVB   ·hasVX(SB), R1
118         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
119         MOVD   $·tanhvectorfacility+0x00(SB), R1
120         MOVD   $·tanh(SB), R2
121         MOVD   R2, 0(R1)
122         BR     ·tanh(SB)
123
124 vectorimpl:
125         MOVD $·tanhvectorfacility+0x00(SB), R1
126         MOVD $·tanhAsm(SB), R2
127         MOVD R2, 0(R1)
128         BR   ·tanhAsm(SB)
129
130 GLOBL ·tanhvectorfacility+0x00(SB), NOPTR, $8
131 DATA ·tanhvectorfacility+0x00(SB)/8, $·tanhTrampolineSetup(SB)
132
133 TEXT ·archLog1p(SB), NOSPLIT, $0
134         MOVD ·log1pvectorfacility+0x00(SB), R1
135         BR   (R1)
136
137 TEXT ·log1pTrampolineSetup(SB), NOSPLIT, $0
138         MOVB   ·hasVX(SB), R1
139         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
140         MOVD   $·log1pvectorfacility+0x00(SB), R1
141         MOVD   $·log1p(SB), R2
142         MOVD   R2, 0(R1)
143         BR     ·log1p(SB)
144
145 vectorimpl:
146         MOVD $·log1pvectorfacility+0x00(SB), R1
147         MOVD $·log1pAsm(SB), R2
148         MOVD R2, 0(R1)
149         BR   ·log1pAsm(SB)
150
151 GLOBL ·log1pvectorfacility+0x00(SB), NOPTR, $8
152 DATA ·log1pvectorfacility+0x00(SB)/8, $·log1pTrampolineSetup(SB)
153
154 TEXT ·archAtanh(SB), NOSPLIT, $0
155         MOVD ·atanhvectorfacility+0x00(SB), R1
156         BR   (R1)
157
158 TEXT ·atanhTrampolineSetup(SB), NOSPLIT, $0
159         MOVB   ·hasVX(SB), R1
160         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
161         MOVD   $·atanhvectorfacility+0x00(SB), R1
162         MOVD   $·atanh(SB), R2
163         MOVD   R2, 0(R1)
164         BR     ·atanh(SB)
165
166 vectorimpl:
167         MOVD $·atanhvectorfacility+0x00(SB), R1
168         MOVD $·atanhAsm(SB), R2
169         MOVD R2, 0(R1)
170         BR   ·atanhAsm(SB)
171
172 GLOBL ·atanhvectorfacility+0x00(SB), NOPTR, $8
173 DATA ·atanhvectorfacility+0x00(SB)/8, $·atanhTrampolineSetup(SB)
174
175 TEXT ·archAcos(SB), NOSPLIT, $0
176         MOVD ·acosvectorfacility+0x00(SB), R1
177         BR   (R1)
178
179 TEXT ·acosTrampolineSetup(SB), NOSPLIT, $0
180         MOVB   ·hasVX(SB), R1
181         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
182         MOVD   $·acosvectorfacility+0x00(SB), R1
183         MOVD   $·acos(SB), R2
184         MOVD   R2, 0(R1)
185         BR     ·acos(SB)
186
187 vectorimpl:
188         MOVD $·acosvectorfacility+0x00(SB), R1
189         MOVD $·acosAsm(SB), R2
190         MOVD R2, 0(R1)
191         BR   ·acosAsm(SB)
192
193 GLOBL ·acosvectorfacility+0x00(SB), NOPTR, $8
194 DATA ·acosvectorfacility+0x00(SB)/8, $·acosTrampolineSetup(SB)
195
196 TEXT ·archAsin(SB), NOSPLIT, $0
197         MOVD ·asinvectorfacility+0x00(SB), R1
198         BR   (R1)
199
200 TEXT ·asinTrampolineSetup(SB), NOSPLIT, $0
201         MOVB   ·hasVX(SB), R1
202         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
203         MOVD   $·asinvectorfacility+0x00(SB), R1
204         MOVD   $·asin(SB), R2
205         MOVD   R2, 0(R1)
206         BR     ·asin(SB)
207
208 vectorimpl:
209         MOVD $·asinvectorfacility+0x00(SB), R1
210         MOVD $·asinAsm(SB), R2
211         MOVD R2, 0(R1)
212         BR   ·asinAsm(SB)
213
214 GLOBL ·asinvectorfacility+0x00(SB), NOPTR, $8
215 DATA ·asinvectorfacility+0x00(SB)/8, $·asinTrampolineSetup(SB)
216
217 TEXT ·archAsinh(SB), NOSPLIT, $0
218         MOVD ·asinhvectorfacility+0x00(SB), R1
219         BR   (R1)
220
221 TEXT ·asinhTrampolineSetup(SB), NOSPLIT, $0
222         MOVB   ·hasVX(SB), R1
223         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
224         MOVD   $·asinhvectorfacility+0x00(SB), R1
225         MOVD   $·asinh(SB), R2
226         MOVD   R2, 0(R1)
227         BR     ·asinh(SB)
228
229 vectorimpl:
230         MOVD $·asinhvectorfacility+0x00(SB), R1
231         MOVD $·asinhAsm(SB), R2
232         MOVD R2, 0(R1)
233         BR   ·asinhAsm(SB)
234
235 GLOBL ·asinhvectorfacility+0x00(SB), NOPTR, $8
236 DATA ·asinhvectorfacility+0x00(SB)/8, $·asinhTrampolineSetup(SB)
237
238 TEXT ·archAcosh(SB), NOSPLIT, $0
239         MOVD ·acoshvectorfacility+0x00(SB), R1
240         BR   (R1)
241
242 TEXT ·acoshTrampolineSetup(SB), NOSPLIT, $0
243         MOVB   ·hasVX(SB), R1
244         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
245         MOVD   $·acoshvectorfacility+0x00(SB), R1
246         MOVD   $·acosh(SB), R2
247         MOVD   R2, 0(R1)
248         BR     ·acosh(SB)
249
250 vectorimpl:
251         MOVD $·acoshvectorfacility+0x00(SB), R1
252         MOVD $·acoshAsm(SB), R2
253         MOVD R2, 0(R1)
254         BR   ·acoshAsm(SB)
255
256 GLOBL ·acoshvectorfacility+0x00(SB), NOPTR, $8
257 DATA ·acoshvectorfacility+0x00(SB)/8, $·acoshTrampolineSetup(SB)
258
259 TEXT ·archErf(SB), NOSPLIT, $0
260         MOVD ·erfvectorfacility+0x00(SB), R1
261         BR   (R1)
262
263 TEXT ·erfTrampolineSetup(SB), NOSPLIT, $0
264         MOVB   ·hasVX(SB), R1
265         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
266         MOVD   $·erfvectorfacility+0x00(SB), R1
267         MOVD   $·erf(SB), R2
268         MOVD   R2, 0(R1)
269         BR     ·erf(SB)
270
271 vectorimpl:
272         MOVD $·erfvectorfacility+0x00(SB), R1
273         MOVD $·erfAsm(SB), R2
274         MOVD R2, 0(R1)
275         BR   ·erfAsm(SB)
276
277 GLOBL ·erfvectorfacility+0x00(SB), NOPTR, $8
278 DATA ·erfvectorfacility+0x00(SB)/8, $·erfTrampolineSetup(SB)
279
280 TEXT ·archErfc(SB), NOSPLIT, $0
281         MOVD ·erfcvectorfacility+0x00(SB), R1
282         BR   (R1)
283
284 TEXT ·erfcTrampolineSetup(SB), NOSPLIT, $0
285         MOVB   ·hasVX(SB), R1
286         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
287         MOVD   $·erfcvectorfacility+0x00(SB), R1
288         MOVD   $·erfc(SB), R2
289         MOVD   R2, 0(R1)
290         BR     ·erfc(SB)
291
292 vectorimpl:
293         MOVD $·erfcvectorfacility+0x00(SB), R1
294         MOVD $·erfcAsm(SB), R2
295         MOVD R2, 0(R1)
296         BR   ·erfcAsm(SB)
297
298 GLOBL ·erfcvectorfacility+0x00(SB), NOPTR, $8
299 DATA ·erfcvectorfacility+0x00(SB)/8, $·erfcTrampolineSetup(SB)
300
301 TEXT ·archAtan(SB), NOSPLIT, $0
302         MOVD ·atanvectorfacility+0x00(SB), R1
303         BR   (R1)
304
305 TEXT ·atanTrampolineSetup(SB), NOSPLIT, $0
306         MOVB   ·hasVX(SB), R1
307         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
308         MOVD   $·atanvectorfacility+0x00(SB), R1
309         MOVD   $·atan(SB), R2
310         MOVD   R2, 0(R1)
311         BR     ·atan(SB)
312
313 vectorimpl:
314         MOVD $·atanvectorfacility+0x00(SB), R1
315         MOVD $·atanAsm(SB), R2
316         MOVD R2, 0(R1)
317         BR   ·atanAsm(SB)
318
319 GLOBL ·atanvectorfacility+0x00(SB), NOPTR, $8
320 DATA ·atanvectorfacility+0x00(SB)/8, $·atanTrampolineSetup(SB)
321
322 TEXT ·archAtan2(SB), NOSPLIT, $0
323         MOVD ·atan2vectorfacility+0x00(SB), R1
324         BR   (R1)
325
326 TEXT ·atan2TrampolineSetup(SB), NOSPLIT, $0
327         MOVB   ·hasVX(SB), R1
328         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
329         MOVD   $·atan2vectorfacility+0x00(SB), R1
330         MOVD   $·atan2(SB), R2
331         MOVD   R2, 0(R1)
332         BR     ·atan2(SB)
333
334 vectorimpl:
335         MOVD $·atan2vectorfacility+0x00(SB), R1
336         MOVD $·atan2Asm(SB), R2
337         MOVD R2, 0(R1)
338         BR   ·atan2Asm(SB)
339
340 GLOBL ·atan2vectorfacility+0x00(SB), NOPTR, $8
341 DATA ·atan2vectorfacility+0x00(SB)/8, $·atan2TrampolineSetup(SB)
342
343 TEXT ·archCbrt(SB), NOSPLIT, $0
344         MOVD ·cbrtvectorfacility+0x00(SB), R1
345         BR   (R1)
346
347 TEXT ·cbrtTrampolineSetup(SB), NOSPLIT, $0
348         MOVB   ·hasVX(SB), R1
349         CMPBEQ R1, $1, vectorimpl                // vectorfacility = 1, vector supported
350         MOVD   $·cbrtvectorfacility+0x00(SB), R1
351         MOVD   $·cbrt(SB), R2
352         MOVD   R2, 0(R1)
353         BR     ·cbrt(SB)
354
355 vectorimpl:
356         MOVD $·cbrtvectorfacility+0x00(SB), R1
357         MOVD $·cbrtAsm(SB), R2
358         MOVD R2, 0(R1)
359         BR   ·cbrtAsm(SB)
360
361 GLOBL ·cbrtvectorfacility+0x00(SB), NOPTR, $8
362 DATA ·cbrtvectorfacility+0x00(SB)/8, $·cbrtTrampolineSetup(SB)
363
364 TEXT ·archLog(SB), NOSPLIT, $0
365         MOVD ·logvectorfacility+0x00(SB), R1
366         BR   (R1)
367
368 TEXT ·logTrampolineSetup(SB), NOSPLIT, $0
369         MOVB   ·hasVX(SB), R1
370         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
371         MOVD   $·logvectorfacility+0x00(SB), R1
372         MOVD   $·log(SB), R2
373         MOVD   R2, 0(R1)
374         BR     ·log(SB)
375
376 vectorimpl:
377         MOVD $·logvectorfacility+0x00(SB), R1
378         MOVD $·logAsm(SB), R2
379         MOVD R2, 0(R1)
380         BR   ·logAsm(SB)
381
382 GLOBL ·logvectorfacility+0x00(SB), NOPTR, $8
383 DATA ·logvectorfacility+0x00(SB)/8, $·logTrampolineSetup(SB)
384
385 TEXT ·archTan(SB), NOSPLIT, $0
386         MOVD ·tanvectorfacility+0x00(SB), R1
387         BR   (R1)
388
389 TEXT ·tanTrampolineSetup(SB), NOSPLIT, $0
390         MOVB   ·hasVX(SB), R1
391         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
392         MOVD   $·tanvectorfacility+0x00(SB), R1
393         MOVD   $·tan(SB), R2
394         MOVD   R2, 0(R1)
395         BR     ·tan(SB)
396
397 vectorimpl:
398         MOVD $·tanvectorfacility+0x00(SB), R1
399         MOVD $·tanAsm(SB), R2
400         MOVD R2, 0(R1)
401         BR   ·tanAsm(SB)
402
403 GLOBL ·tanvectorfacility+0x00(SB), NOPTR, $8
404 DATA ·tanvectorfacility+0x00(SB)/8, $·tanTrampolineSetup(SB)
405
406 TEXT ·archExp(SB), NOSPLIT, $0
407         MOVD ·expvectorfacility+0x00(SB), R1
408         BR   (R1)
409
410 TEXT ·expTrampolineSetup(SB), NOSPLIT, $0
411         MOVB   ·hasVX(SB), R1
412         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
413         MOVD   $·expvectorfacility+0x00(SB), R1
414         MOVD   $·exp(SB), R2
415         MOVD   R2, 0(R1)
416         BR     ·exp(SB)
417
418 vectorimpl:
419         MOVD $·expvectorfacility+0x00(SB), R1
420         MOVD $·expAsm(SB), R2
421         MOVD R2, 0(R1)
422         BR   ·expAsm(SB)
423
424 GLOBL ·expvectorfacility+0x00(SB), NOPTR, $8
425 DATA ·expvectorfacility+0x00(SB)/8, $·expTrampolineSetup(SB)
426
427 TEXT ·archExpm1(SB), NOSPLIT, $0
428         MOVD ·expm1vectorfacility+0x00(SB), R1
429         BR   (R1)
430
431 TEXT ·expm1TrampolineSetup(SB), NOSPLIT, $0
432         MOVB   ·hasVX(SB), R1
433         CMPBEQ R1, $1, vectorimpl                 // vectorfacility = 1, vector supported
434         MOVD   $·expm1vectorfacility+0x00(SB), R1
435         MOVD   $·expm1(SB), R2
436         MOVD   R2, 0(R1)
437         BR     ·expm1(SB)
438
439 vectorimpl:
440         MOVD $·expm1vectorfacility+0x00(SB), R1
441         MOVD $·expm1Asm(SB), R2
442         MOVD R2, 0(R1)
443         BR   ·expm1Asm(SB)
444
445 GLOBL ·expm1vectorfacility+0x00(SB), NOPTR, $8
446 DATA ·expm1vectorfacility+0x00(SB)/8, $·expm1TrampolineSetup(SB)
447
448 TEXT ·archPow(SB), NOSPLIT, $0
449         MOVD ·powvectorfacility+0x00(SB), R1
450         BR   (R1)
451
452 TEXT ·powTrampolineSetup(SB), NOSPLIT, $0
453         MOVB   ·hasVX(SB), R1
454         CMPBEQ R1, $1, vectorimpl               // vectorfacility = 1, vector supported
455         MOVD   $·powvectorfacility+0x00(SB), R1
456         MOVD   $·pow(SB), R2
457         MOVD   R2, 0(R1)
458         BR     ·pow(SB)
459
460 vectorimpl:
461         MOVD $·powvectorfacility+0x00(SB), R1
462         MOVD $·powAsm(SB), R2
463         MOVD R2, 0(R1)
464         BR   ·powAsm(SB)
465
466 GLOBL ·powvectorfacility+0x00(SB), NOPTR, $8
467 DATA ·powvectorfacility+0x00(SB)/8, $·powTrampolineSetup(SB)
468