Text file
src/math/erfc_s390x.s
1 // Copyright 2017 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 #define Neg2p11 0xC000E147AE147AE1
8 #define Pos15 0x402E
9
10 // Minimax polynomial coefficients and other constants
11 DATA ·erfcrodataL38<> + 0(SB)/8, $.234875460637085087E-01
12 DATA ·erfcrodataL38<> + 8(SB)/8, $.234469449299256284E-01
13 DATA ·erfcrodataL38<> + 16(SB)/8, $-.606918710392844955E-04
14 DATA ·erfcrodataL38<> + 24(SB)/8, $-.198827088077636213E-04
15 DATA ·erfcrodataL38<> + 32(SB)/8, $.257805645845475331E-06
16 DATA ·erfcrodataL38<> + 40(SB)/8, $-.184427218110620284E-09
17 DATA ·erfcrodataL38<> + 48(SB)/8, $.122408098288933181E-10
18 DATA ·erfcrodataL38<> + 56(SB)/8, $.484691106751495392E-07
19 DATA ·erfcrodataL38<> + 64(SB)/8, $-.150147637632890281E-08
20 DATA ·erfcrodataL38<> + 72(SB)/8, $23.999999999973521625
21 DATA ·erfcrodataL38<> + 80(SB)/8, $27.226017111108365754
22 DATA ·erfcrodataL38<> + 88(SB)/8, $-2.0
23 DATA ·erfcrodataL38<> + 96(SB)/8, $0.100108802034478228E+00
24 DATA ·erfcrodataL38<> + 104(SB)/8, $0.244588413746558125E+00
25 DATA ·erfcrodataL38<> + 112(SB)/8, $-.669188879646637174E-01
26 DATA ·erfcrodataL38<> + 120(SB)/8, $0.151311447000953551E-01
27 DATA ·erfcrodataL38<> + 128(SB)/8, $-.284720833493302061E-02
28 DATA ·erfcrodataL38<> + 136(SB)/8, $0.455491239358743212E-03
29 DATA ·erfcrodataL38<> + 144(SB)/8, $-.631850539280720949E-04
30 DATA ·erfcrodataL38<> + 152(SB)/8, $0.772532660726086679E-05
31 DATA ·erfcrodataL38<> + 160(SB)/8, $-.843706007150936940E-06
32 DATA ·erfcrodataL38<> + 168(SB)/8, $-.735330214904227472E-08
33 DATA ·erfcrodataL38<> + 176(SB)/8, $0.753002008837084967E-09
34 DATA ·erfcrodataL38<> + 184(SB)/8, $0.832482036660624637E-07
35 DATA ·erfcrodataL38<> + 192(SB)/8, $-0.75
36 DATA ·erfcrodataL38<> + 200(SB)/8, $.927765678007128609E-01
37 DATA ·erfcrodataL38<> + 208(SB)/8, $.903621209344751506E-01
38 DATA ·erfcrodataL38<> + 216(SB)/8, $-.344203375025257265E-02
39 DATA ·erfcrodataL38<> + 224(SB)/8, $-.869243428221791329E-03
40 DATA ·erfcrodataL38<> + 232(SB)/8, $.174699813107105603E-03
41 DATA ·erfcrodataL38<> + 240(SB)/8, $.649481036316130000E-05
42 DATA ·erfcrodataL38<> + 248(SB)/8, $-.895265844897118382E-05
43 DATA ·erfcrodataL38<> + 256(SB)/8, $.135970046909529513E-05
44 DATA ·erfcrodataL38<> + 264(SB)/8, $.277617717014748015E-06
45 DATA ·erfcrodataL38<> + 272(SB)/8, $.810628018408232910E-08
46 DATA ·erfcrodataL38<> + 280(SB)/8, $.210430084693497985E-07
47 DATA ·erfcrodataL38<> + 288(SB)/8, $-.342138077525615091E-08
48 DATA ·erfcrodataL38<> + 296(SB)/8, $-.165467946798610800E-06
49 DATA ·erfcrodataL38<> + 304(SB)/8, $5.999999999988412824
50 DATA ·erfcrodataL38<> + 312(SB)/8, $.468542210149072159E-01
51 DATA ·erfcrodataL38<> + 320(SB)/8, $.465343528567604256E-01
52 DATA ·erfcrodataL38<> + 328(SB)/8, $-.473338083650201733E-03
53 DATA ·erfcrodataL38<> + 336(SB)/8, $-.147220659069079156E-03
54 DATA ·erfcrodataL38<> + 344(SB)/8, $.755284723554388339E-05
55 DATA ·erfcrodataL38<> + 352(SB)/8, $.116158570631428789E-05
56 DATA ·erfcrodataL38<> + 360(SB)/8, $-.155445501551602389E-06
57 DATA ·erfcrodataL38<> + 368(SB)/8, $-.616940119847805046E-10
58 DATA ·erfcrodataL38<> + 376(SB)/8, $-.728705590727563158E-10
59 DATA ·erfcrodataL38<> + 384(SB)/8, $-.983452460354586779E-08
60 DATA ·erfcrodataL38<> + 392(SB)/8, $.365156164194346316E-08
61 DATA ·erfcrodataL38<> + 400(SB)/8, $11.999999999996530775
62 DATA ·erfcrodataL38<> + 408(SB)/8, $0.467773498104726584E-02
63 DATA ·erfcrodataL38<> + 416(SB)/8, $0.206669853540920535E-01
64 DATA ·erfcrodataL38<> + 424(SB)/8, $0.413339707081841473E-01
65 DATA ·erfcrodataL38<> + 432(SB)/8, $0.482229658262131320E-01
66 DATA ·erfcrodataL38<> + 440(SB)/8, $0.344449755901841897E-01
67 DATA ·erfcrodataL38<> + 448(SB)/8, $0.130890907240765465E-01
68 DATA ·erfcrodataL38<> + 456(SB)/8, $-.459266344100642687E-03
69 DATA ·erfcrodataL38<> + 464(SB)/8, $-.337888800856913728E-02
70 DATA ·erfcrodataL38<> + 472(SB)/8, $-.159103061687062373E-02
71 DATA ·erfcrodataL38<> + 480(SB)/8, $-.501128905515922644E-04
72 DATA ·erfcrodataL38<> + 488(SB)/8, $0.262775855852903132E-03
73 DATA ·erfcrodataL38<> + 496(SB)/8, $0.103860982197462436E-03
74 DATA ·erfcrodataL38<> + 504(SB)/8, $-.548835785414200775E-05
75 DATA ·erfcrodataL38<> + 512(SB)/8, $-.157075054646618214E-04
76 DATA ·erfcrodataL38<> + 520(SB)/8, $-.480056366276045110E-05
77 DATA ·erfcrodataL38<> + 528(SB)/8, $0.198263013759701555E-05
78 DATA ·erfcrodataL38<> + 536(SB)/8, $-.224394262958888780E-06
79 DATA ·erfcrodataL38<> + 544(SB)/8, $-.321853693146683428E-06
80 DATA ·erfcrodataL38<> + 552(SB)/8, $0.445073894984683537E-07
81 DATA ·erfcrodataL38<> + 560(SB)/8, $0.660425940000555729E-06
82 DATA ·erfcrodataL38<> + 568(SB)/8, $2.0
83 DATA ·erfcrodataL38<> + 576(SB)/8, $8.63616855509444462538e-78
84 DATA ·erfcrodataL38<> + 584(SB)/8, $1.00000000000000222044
85 DATA ·erfcrodataL38<> + 592(SB)/8, $0.500000000000004237e+00
86 DATA ·erfcrodataL38<> + 600(SB)/8, $0.416666664838056960e-01
87 DATA ·erfcrodataL38<> + 608(SB)/8, $0.166666666630345592e+00
88 DATA ·erfcrodataL38<> + 616(SB)/8, $0.138926439368309441e-02
89 DATA ·erfcrodataL38<> + 624(SB)/8, $0.833349307718286047e-02
90 DATA ·erfcrodataL38<> + 632(SB)/8, $-.693147180558298714e+00
91 DATA ·erfcrodataL38<> + 640(SB)/8, $-.164659495826017651e-11
92 DATA ·erfcrodataL38<> + 648(SB)/8, $.179001151181866548E+00
93 DATA ·erfcrodataL38<> + 656(SB)/8, $-.144269504088896339e+01
94 DATA ·erfcrodataL38<> + 664(SB)/8, $+281475245147134.9375
95 DATA ·erfcrodataL38<> + 672(SB)/8, $.163116780021877404E+00
96 DATA ·erfcrodataL38<> + 680(SB)/8, $-.201574395828120710E-01
97 DATA ·erfcrodataL38<> + 688(SB)/8, $-.185726336009394125E-02
98 DATA ·erfcrodataL38<> + 696(SB)/8, $.199349204957273749E-02
99 DATA ·erfcrodataL38<> + 704(SB)/8, $-.554902415532606242E-03
100 DATA ·erfcrodataL38<> + 712(SB)/8, $-.638914789660242846E-05
101 DATA ·erfcrodataL38<> + 720(SB)/8, $-.424441522653742898E-04
102 DATA ·erfcrodataL38<> + 728(SB)/8, $.827967511921486190E-04
103 DATA ·erfcrodataL38<> + 736(SB)/8, $.913965446284062654E-05
104 DATA ·erfcrodataL38<> + 744(SB)/8, $.277344791076320853E-05
105 DATA ·erfcrodataL38<> + 752(SB)/8, $-.467239678927239526E-06
106 DATA ·erfcrodataL38<> + 760(SB)/8, $.344814065920419986E-07
107 DATA ·erfcrodataL38<> + 768(SB)/8, $-.366013491552527132E-05
108 DATA ·erfcrodataL38<> + 776(SB)/8, $.181242810023783439E-05
109 DATA ·erfcrodataL38<> + 784(SB)/8, $2.999999999991234567
110 DATA ·erfcrodataL38<> + 792(SB)/8, $1.0
111 GLOBL ·erfcrodataL38<> + 0(SB), RODATA, $800
112
113 // Table of log correction terms
114 DATA ·erfctab2069<> + 0(SB)/8, $0.442737824274138381e-01
115 DATA ·erfctab2069<> + 8(SB)/8, $0.263602189790660309e-01
116 DATA ·erfctab2069<> + 16(SB)/8, $0.122565642281703586e-01
117 DATA ·erfctab2069<> + 24(SB)/8, $0.143757052860721398e-02
118 DATA ·erfctab2069<> + 32(SB)/8, $-.651375034121276075e-02
119 DATA ·erfctab2069<> + 40(SB)/8, $-.119317678849450159e-01
120 DATA ·erfctab2069<> + 48(SB)/8, $-.150868749549871069e-01
121 DATA ·erfctab2069<> + 56(SB)/8, $-.161992609578469234e-01
122 DATA ·erfctab2069<> + 64(SB)/8, $-.154492360403337917e-01
123 DATA ·erfctab2069<> + 72(SB)/8, $-.129850717389178721e-01
124 DATA ·erfctab2069<> + 80(SB)/8, $-.892902649276657891e-02
125 DATA ·erfctab2069<> + 88(SB)/8, $-.338202636596794887e-02
126 DATA ·erfctab2069<> + 96(SB)/8, $0.357266307045684762e-02
127 DATA ·erfctab2069<> + 104(SB)/8, $0.118665304327406698e-01
128 DATA ·erfctab2069<> + 112(SB)/8, $0.214434994118118914e-01
129 DATA ·erfctab2069<> + 120(SB)/8, $0.322580645161290314e-01
130 GLOBL ·erfctab2069<> + 0(SB), RODATA, $128
131
132 // Erfc returns the complementary error function of the argument.
133 //
134 // Special cases are:
135 // Erfc(+Inf) = 0
136 // Erfc(-Inf) = 2
137 // Erfc(NaN) = NaN
138 // The algorithm used is minimax polynomial approximation
139 // with coefficients determined with a Remez exchange algorithm.
140 // This assembly implementation handles inputs in the range [-2.11, +15].
141 // For all other inputs we call the generic Go implementation.
142
143 TEXT ·erfcAsm(SB), NOSPLIT|NOFRAME, $0-16
144 MOVD x+0(FP), R1
145 MOVD $Neg2p11, R2
146 CMPUBGT R1, R2, usego
147
148 FMOVD x+0(FP), F0
149 MOVD $·erfcrodataL38<>+0(SB), R9
150 FMOVD F0, F2
151 SRAD $48, R1
152 MOVH R1, R2
153 ANDW $0x7FFF, R1
154 MOVH $Pos15, R3
155 CMPW R1, R3
156 BGT usego
157 MOVH $0x3FFF, R3
158 MOVW R1, R6
159 MOVW R3, R7
160 CMPBGT R6, R7, L2
161 MOVH $0x3FEF, R3
162 MOVW R3, R7
163 CMPBGT R6, R7, L3
164 MOVH $0x2FFF, R2
165 MOVW R2, R7
166 CMPBGT R6, R7, L4
167 FMOVD 792(R9), F0
168 WFSDB V2, V0, V2
169 FMOVD F2, ret+8(FP)
170 RET
171
172 L2:
173 LTDBR F0, F0
174 MOVH $0x0, R4
175 BLTU L3
176 FMOVD F0, F1
177 L9:
178 MOVH $0x400F, R3
179 MOVW R1, R6
180 MOVW R3, R7
181 CMPBGT R6, R7, L10
182 FMOVD 784(R9), F3
183 FSUB F1, F3
184 VLEG $0, 776(R9), V20
185 WFDDB V1, V3, V6
186 VLEG $0, 768(R9), V18
187 FMOVD 760(R9), F7
188 FMOVD 752(R9), F5
189 VLEG $0, 744(R9), V16
190 FMOVD 736(R9), F3
191 FMOVD 728(R9), F2
192 FMOVD 720(R9), F4
193 WFMDB V6, V6, V1
194 FMUL F0, F0
195 MOVH $0x0, R3
196 WFMADB V1, V7, V20, V7
197 WFMADB V1, V5, V18, V5
198 WFMADB V1, V7, V16, V7
199 WFMADB V1, V5, V3, V5
200 WFMADB V1, V7, V4, V7
201 WFMADB V1, V5, V2, V5
202 FMOVD 712(R9), F2
203 WFMADB V1, V7, V2, V7
204 FMOVD 704(R9), F2
205 WFMADB V1, V5, V2, V5
206 FMOVD 696(R9), F2
207 WFMADB V1, V7, V2, V7
208 FMOVD 688(R9), F2
209 MOVH $0x0, R1
210 WFMADB V1, V5, V2, V5
211 FMOVD 680(R9), F2
212 WFMADB V1, V7, V2, V7
213 FMOVD 672(R9), F2
214 WFMADB V1, V5, V2, V1
215 FMOVD 664(R9), F3
216 WFMADB V6, V7, V1, V7
217 FMOVD 656(R9), F5
218 FMOVD 648(R9), F2
219 WFMADB V0, V5, V3, V5
220 WFMADB V6, V7, V2, V7
221 L11:
222 LGDR F5, R6
223 WFSDB V0, V0, V2
224 WORD $0xED509298 //sdb %f5,.L55-.L38(%r9)
225 BYTE $0x00
226 BYTE $0x1B
227 FMOVD 640(R9), F6
228 FMOVD 632(R9), F4
229 WFMSDB V5, V6, V2, V6
230 WFMSDB V5, V4, V0, V4
231 FMOVD 624(R9), F2
232 FADD F6, F4
233 FMOVD 616(R9), F0
234 FMOVD 608(R9), F6
235 WFMADB V4, V0, V2, V0
236 FMOVD 600(R9), F3
237 WFMDB V4, V4, V2
238 MOVH R6,R6
239 ADD R6, R3
240 WFMADB V4, V3, V6, V3
241 FMOVD 592(R9), F6
242 WFMADB V0, V2, V3, V0
243 FMOVD 584(R9), F3
244 WFMADB V4, V6, V3, V6
245 RISBGZ $57, $60, $3, R3, R12
246 WFMADB V2, V0, V6, V0
247 MOVD $·erfctab2069<>+0(SB), R5
248 WORD $0x682C5000 //ld %f2,0(%r12,%r5)
249 FMADD F2, F4, F4
250 RISBGN $0, $15, $48, R3, R4
251 WFMADB V4, V0, V2, V4
252 LDGR R4, F2
253 FMADD F4, F2, F2
254 MOVW R2, R6
255 CMPBLE R6, $0, L20
256 MOVW R1, R6
257 CMPBEQ R6, $0, L21
258 WORD $0xED709240 //mdb %f7,.L66-.L38(%r9)
259 BYTE $0x00
260 BYTE $0x1C
261 L21:
262 FMUL F7, F2
263 L1:
264 FMOVD F2, ret+8(FP)
265 RET
266 L3:
267 LTDBR F0, F0
268 BLTU L30
269 FMOVD 568(R9), F2
270 WFSDB V0, V2, V0
271 L8:
272 WFMDB V0, V0, V4
273 FMOVD 560(R9), F2
274 FMOVD 552(R9), F6
275 FMOVD 544(R9), F1
276 WFMADB V4, V6, V2, V6
277 FMOVD 536(R9), F2
278 WFMADB V4, V1, V2, V1
279 FMOVD 528(R9), F3
280 FMOVD 520(R9), F2
281 WFMADB V4, V6, V3, V6
282 WFMADB V4, V1, V2, V1
283 FMOVD 512(R9), F3
284 FMOVD 504(R9), F2
285 WFMADB V4, V6, V3, V6
286 WFMADB V4, V1, V2, V1
287 FMOVD 496(R9), F3
288 FMOVD 488(R9), F2
289 WFMADB V4, V6, V3, V6
290 WFMADB V4, V1, V2, V1
291 FMOVD 480(R9), F3
292 FMOVD 472(R9), F2
293 WFMADB V4, V6, V3, V6
294 WFMADB V4, V1, V2, V1
295 FMOVD 464(R9), F3
296 FMOVD 456(R9), F2
297 WFMADB V4, V6, V3, V6
298 WFMADB V4, V1, V2, V1
299 FMOVD 448(R9), F3
300 FMOVD 440(R9), F2
301 WFMADB V4, V6, V3, V6
302 WFMADB V4, V1, V2, V1
303 FMOVD 432(R9), F3
304 FMOVD 424(R9), F2
305 WFMADB V4, V6, V3, V6
306 WFMADB V4, V1, V2, V1
307 FMOVD 416(R9), F3
308 FMOVD 408(R9), F2
309 WFMADB V4, V6, V3, V6
310 FMADD F1, F4, F2
311 FMADD F6, F0, F2
312 MOVW R2, R6
313 CMPBGE R6, $0, L1
314 FMOVD 568(R9), F0
315 WFSDB V2, V0, V2
316 BR L1
317 L10:
318 MOVH $0x401F, R3
319 MOVW R1, R6
320 MOVW R3, R7
321 CMPBLE R6, R7, L36
322 MOVH $0x402F, R3
323 MOVW R3, R7
324 CMPBGT R6, R7, L13
325 FMOVD 400(R9), F3
326 FSUB F1, F3
327 VLEG $0, 392(R9), V20
328 WFDDB V1, V3, V6
329 VLEG $0, 384(R9), V18
330 FMOVD 376(R9), F2
331 FMOVD 368(R9), F4
332 VLEG $0, 360(R9), V16
333 FMOVD 352(R9), F7
334 FMOVD 344(R9), F3
335 FMUL F0, F0
336 WFMDB V6, V6, V1
337 FMOVD 656(R9), F5
338 MOVH $0x0, R3
339 WFMADB V1, V2, V20, V2
340 WFMADB V1, V4, V18, V4
341 WFMADB V1, V2, V16, V2
342 WFMADB V1, V4, V7, V4
343 WFMADB V1, V2, V3, V2
344 FMOVD 336(R9), F3
345 WFMADB V1, V4, V3, V4
346 FMOVD 328(R9), F3
347 WFMADB V1, V2, V3, V2
348 FMOVD 320(R9), F3
349 WFMADB V1, V4, V3, V1
350 FMOVD 312(R9), F7
351 WFMADB V6, V2, V1, V2
352 MOVH $0x0, R1
353 FMOVD 664(R9), F3
354 FMADD F2, F6, F7
355 WFMADB V0, V5, V3, V5
356 BR L11
357 L35:
358 WORD $0xB3130010 //lcdbr %f1,%f0
359 BR L9
360 L36:
361 FMOVD 304(R9), F3
362 FSUB F1, F3
363 VLEG $0, 296(R9), V20
364 WFDDB V1, V3, V6
365 FMOVD 288(R9), F5
366 FMOVD 280(R9), F1
367 FMOVD 272(R9), F2
368 VLEG $0, 264(R9), V18
369 VLEG $0, 256(R9), V16
370 FMOVD 248(R9), F3
371 FMOVD 240(R9), F4
372 WFMDB V6, V6, V7
373 FMUL F0, F0
374 MOVH $0x0, R3
375 FMADD F5, F7, F1
376 WFMADB V7, V2, V20, V2
377 WFMADB V7, V1, V18, V1
378 WFMADB V7, V2, V16, V2
379 WFMADB V7, V1, V3, V1
380 WFMADB V7, V2, V4, V2
381 FMOVD 232(R9), F4
382 WFMADB V7, V1, V4, V1
383 FMOVD 224(R9), F4
384 WFMADB V7, V2, V4, V2
385 FMOVD 216(R9), F4
386 WFMADB V7, V1, V4, V1
387 FMOVD 208(R9), F4
388 MOVH $0x0, R1
389 WFMADB V7, V2, V4, V7
390 FMOVD 656(R9), F5
391 WFMADB V6, V1, V7, V1
392 FMOVD 664(R9), F3
393 FMOVD 200(R9), F7
394 WFMADB V0, V5, V3, V5
395 FMADD F1, F6, F7
396 BR L11
397 L4:
398 FMOVD 192(R9), F1
399 FMADD F0, F0, F1
400 FMOVD 184(R9), F3
401 WFMDB V1, V1, V0
402 FMOVD 176(R9), F4
403 FMOVD 168(R9), F6
404 WFMADB V0, V4, V3, V4
405 FMOVD 160(R9), F3
406 WFMADB V0, V6, V3, V6
407 FMOVD 152(R9), F5
408 FMOVD 144(R9), F3
409 WFMADB V0, V4, V5, V4
410 WFMADB V0, V6, V3, V6
411 FMOVD 136(R9), F5
412 FMOVD 128(R9), F3
413 WFMADB V0, V4, V5, V4
414 WFMADB V0, V6, V3, V6
415 FMOVD 120(R9), F5
416 FMOVD 112(R9), F3
417 WFMADB V0, V4, V5, V4
418 WFMADB V0, V6, V3, V6
419 FMOVD 104(R9), F5
420 FMOVD 96(R9), F3
421 WFMADB V0, V4, V5, V4
422 WFMADB V0, V6, V3, V0
423 FMOVD F2, F6
424 FMADD F4, F1, F0
425 WORD $0xED609318 //sdb %f6,.L39-.L38(%r9)
426 BYTE $0x00
427 BYTE $0x1B
428 WFMSDB V2, V0, V6, V2
429 FMOVD F2, ret+8(FP)
430 RET
431 L30:
432 WORD $0xED009238 //adb %f0,.L67-.L38(%r9)
433 BYTE $0x00
434 BYTE $0x1A
435 BR L8
436 L20:
437 FMOVD 88(R9), F0
438 WFMADB V7, V2, V0, V2
439 WORD $0xB3130022 //lcdbr %f2,%f2
440 FMOVD F2, ret+8(FP)
441 RET
442 L13:
443 MOVH $0x403A, R3
444 MOVW R1, R6
445 MOVW R3, R7
446 CMPBLE R6, R7, L4
447 WORD $0xED109050 //cdb %f1,.L128-.L38(%r9)
448 BYTE $0x00
449 BYTE $0x19
450 BGE L37
451 BVS L37
452 FMOVD 72(R9), F6
453 FSUB F1, F6
454 MOVH $0x1000, R3
455 FDIV F1, F6
456 MOVH $0x1000, R1
457 L17:
458 WFMDB V6, V6, V1
459 FMOVD 64(R9), F2
460 FMOVD 56(R9), F4
461 FMOVD 48(R9), F3
462 WFMADB V1, V3, V2, V3
463 FMOVD 40(R9), F2
464 WFMADB V1, V2, V4, V2
465 FMOVD 32(R9), F4
466 WFMADB V1, V3, V4, V3
467 FMOVD 24(R9), F4
468 WFMADB V1, V2, V4, V2
469 FMOVD 16(R9), F4
470 WFMADB V1, V3, V4, V3
471 FMOVD 8(R9), F4
472 WFMADB V1, V2, V4, V1
473 FMUL F0, F0
474 WFMADB V3, V6, V1, V3
475 FMOVD 656(R9), F5
476 FMOVD 664(R9), F4
477 FMOVD 0(R9), F7
478 WFMADB V0, V5, V4, V5
479 FMADD F6, F3, F7
480 BR L11
481 L14:
482 FMOVD 72(R9), F6
483 FSUB F1, F6
484 MOVH $0x403A, R3
485 FDIV F1, F6
486 MOVW R1, R6
487 MOVW R3, R7
488 CMPBEQ R6, R7, L23
489 MOVH $0x0, R3
490 MOVH $0x0, R1
491 BR L17
492 L37:
493 WFCEDBS V0, V0, V0
494 BVS L1
495 MOVW R2, R6
496 CMPBLE R6, $0, L18
497 MOVH $0x7FEF, R2
498 MOVW R1, R6
499 MOVW R2, R7
500 CMPBGT R6, R7, L24
501
502 WORD $0xA5400010 //iihh %r4,16
503 LDGR R4, F2
504 FMUL F2, F2
505 BR L1
506 L23:
507 MOVH $0x1000, R3
508 MOVH $0x1000, R1
509 BR L17
510 L24:
511 FMOVD $0, F2
512 BR L1
513 L18:
514 MOVH $0x7FEF, R2
515 MOVW R1, R6
516 MOVW R2, R7
517 CMPBGT R6, R7, L25
518 WORD $0xA5408010 //iihh %r4,32784
519 FMOVD 568(R9), F2
520 LDGR R4, F0
521 FMADD F2, F0, F2
522 BR L1
523 L25:
524 FMOVD 568(R9), F2
525 BR L1
526 usego:
527 BR ·erfc(SB)
528
View as plain text