Text file
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
469
View as plain text