| // Copyright 2017 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| #include "textflag.h" |
| |
| #define Neg2p11 0xC000E147AE147AE1 |
| #define Pos15 0x402E |
| |
| // Minimax polynomial coefficients and other constants |
| DATA ·erfcrodataL38<> + 0(SB)/8, $.234875460637085087E-01 |
| DATA ·erfcrodataL38<> + 8(SB)/8, $.234469449299256284E-01 |
| DATA ·erfcrodataL38<> + 16(SB)/8, $-.606918710392844955E-04 |
| DATA ·erfcrodataL38<> + 24(SB)/8, $-.198827088077636213E-04 |
| DATA ·erfcrodataL38<> + 32(SB)/8, $.257805645845475331E-06 |
| DATA ·erfcrodataL38<> + 40(SB)/8, $-.184427218110620284E-09 |
| DATA ·erfcrodataL38<> + 48(SB)/8, $.122408098288933181E-10 |
| DATA ·erfcrodataL38<> + 56(SB)/8, $.484691106751495392E-07 |
| DATA ·erfcrodataL38<> + 64(SB)/8, $-.150147637632890281E-08 |
| DATA ·erfcrodataL38<> + 72(SB)/8, $23.999999999973521625 |
| DATA ·erfcrodataL38<> + 80(SB)/8, $27.226017111108365754 |
| DATA ·erfcrodataL38<> + 88(SB)/8, $-2.0 |
| DATA ·erfcrodataL38<> + 96(SB)/8, $0.100108802034478228E+00 |
| DATA ·erfcrodataL38<> + 104(SB)/8, $0.244588413746558125E+00 |
| DATA ·erfcrodataL38<> + 112(SB)/8, $-.669188879646637174E-01 |
| DATA ·erfcrodataL38<> + 120(SB)/8, $0.151311447000953551E-01 |
| DATA ·erfcrodataL38<> + 128(SB)/8, $-.284720833493302061E-02 |
| DATA ·erfcrodataL38<> + 136(SB)/8, $0.455491239358743212E-03 |
| DATA ·erfcrodataL38<> + 144(SB)/8, $-.631850539280720949E-04 |
| DATA ·erfcrodataL38<> + 152(SB)/8, $0.772532660726086679E-05 |
| DATA ·erfcrodataL38<> + 160(SB)/8, $-.843706007150936940E-06 |
| DATA ·erfcrodataL38<> + 168(SB)/8, $-.735330214904227472E-08 |
| DATA ·erfcrodataL38<> + 176(SB)/8, $0.753002008837084967E-09 |
| DATA ·erfcrodataL38<> + 184(SB)/8, $0.832482036660624637E-07 |
| DATA ·erfcrodataL38<> + 192(SB)/8, $-0.75 |
| DATA ·erfcrodataL38<> + 200(SB)/8, $.927765678007128609E-01 |
| DATA ·erfcrodataL38<> + 208(SB)/8, $.903621209344751506E-01 |
| DATA ·erfcrodataL38<> + 216(SB)/8, $-.344203375025257265E-02 |
| DATA ·erfcrodataL38<> + 224(SB)/8, $-.869243428221791329E-03 |
| DATA ·erfcrodataL38<> + 232(SB)/8, $.174699813107105603E-03 |
| DATA ·erfcrodataL38<> + 240(SB)/8, $.649481036316130000E-05 |
| DATA ·erfcrodataL38<> + 248(SB)/8, $-.895265844897118382E-05 |
| DATA ·erfcrodataL38<> + 256(SB)/8, $.135970046909529513E-05 |
| DATA ·erfcrodataL38<> + 264(SB)/8, $.277617717014748015E-06 |
| DATA ·erfcrodataL38<> + 272(SB)/8, $.810628018408232910E-08 |
| DATA ·erfcrodataL38<> + 280(SB)/8, $.210430084693497985E-07 |
| DATA ·erfcrodataL38<> + 288(SB)/8, $-.342138077525615091E-08 |
| DATA ·erfcrodataL38<> + 296(SB)/8, $-.165467946798610800E-06 |
| DATA ·erfcrodataL38<> + 304(SB)/8, $5.999999999988412824 |
| DATA ·erfcrodataL38<> + 312(SB)/8, $.468542210149072159E-01 |
| DATA ·erfcrodataL38<> + 320(SB)/8, $.465343528567604256E-01 |
| DATA ·erfcrodataL38<> + 328(SB)/8, $-.473338083650201733E-03 |
| DATA ·erfcrodataL38<> + 336(SB)/8, $-.147220659069079156E-03 |
| DATA ·erfcrodataL38<> + 344(SB)/8, $.755284723554388339E-05 |
| DATA ·erfcrodataL38<> + 352(SB)/8, $.116158570631428789E-05 |
| DATA ·erfcrodataL38<> + 360(SB)/8, $-.155445501551602389E-06 |
| DATA ·erfcrodataL38<> + 368(SB)/8, $-.616940119847805046E-10 |
| DATA ·erfcrodataL38<> + 376(SB)/8, $-.728705590727563158E-10 |
| DATA ·erfcrodataL38<> + 384(SB)/8, $-.983452460354586779E-08 |
| DATA ·erfcrodataL38<> + 392(SB)/8, $.365156164194346316E-08 |
| DATA ·erfcrodataL38<> + 400(SB)/8, $11.999999999996530775 |
| DATA ·erfcrodataL38<> + 408(SB)/8, $0.467773498104726584E-02 |
| DATA ·erfcrodataL38<> + 416(SB)/8, $0.206669853540920535E-01 |
| DATA ·erfcrodataL38<> + 424(SB)/8, $0.413339707081841473E-01 |
| DATA ·erfcrodataL38<> + 432(SB)/8, $0.482229658262131320E-01 |
| DATA ·erfcrodataL38<> + 440(SB)/8, $0.344449755901841897E-01 |
| DATA ·erfcrodataL38<> + 448(SB)/8, $0.130890907240765465E-01 |
| DATA ·erfcrodataL38<> + 456(SB)/8, $-.459266344100642687E-03 |
| DATA ·erfcrodataL38<> + 464(SB)/8, $-.337888800856913728E-02 |
| DATA ·erfcrodataL38<> + 472(SB)/8, $-.159103061687062373E-02 |
| DATA ·erfcrodataL38<> + 480(SB)/8, $-.501128905515922644E-04 |
| DATA ·erfcrodataL38<> + 488(SB)/8, $0.262775855852903132E-03 |
| DATA ·erfcrodataL38<> + 496(SB)/8, $0.103860982197462436E-03 |
| DATA ·erfcrodataL38<> + 504(SB)/8, $-.548835785414200775E-05 |
| DATA ·erfcrodataL38<> + 512(SB)/8, $-.157075054646618214E-04 |
| DATA ·erfcrodataL38<> + 520(SB)/8, $-.480056366276045110E-05 |
| DATA ·erfcrodataL38<> + 528(SB)/8, $0.198263013759701555E-05 |
| DATA ·erfcrodataL38<> + 536(SB)/8, $-.224394262958888780E-06 |
| DATA ·erfcrodataL38<> + 544(SB)/8, $-.321853693146683428E-06 |
| DATA ·erfcrodataL38<> + 552(SB)/8, $0.445073894984683537E-07 |
| DATA ·erfcrodataL38<> + 560(SB)/8, $0.660425940000555729E-06 |
| DATA ·erfcrodataL38<> + 568(SB)/8, $2.0 |
| DATA ·erfcrodataL38<> + 576(SB)/8, $8.63616855509444462538e-78 |
| DATA ·erfcrodataL38<> + 584(SB)/8, $1.00000000000000222044 |
| DATA ·erfcrodataL38<> + 592(SB)/8, $0.500000000000004237e+00 |
| DATA ·erfcrodataL38<> + 600(SB)/8, $0.416666664838056960e-01 |
| DATA ·erfcrodataL38<> + 608(SB)/8, $0.166666666630345592e+00 |
| DATA ·erfcrodataL38<> + 616(SB)/8, $0.138926439368309441e-02 |
| DATA ·erfcrodataL38<> + 624(SB)/8, $0.833349307718286047e-02 |
| DATA ·erfcrodataL38<> + 632(SB)/8, $-.693147180558298714e+00 |
| DATA ·erfcrodataL38<> + 640(SB)/8, $-.164659495826017651e-11 |
| DATA ·erfcrodataL38<> + 648(SB)/8, $.179001151181866548E+00 |
| DATA ·erfcrodataL38<> + 656(SB)/8, $-.144269504088896339e+01 |
| DATA ·erfcrodataL38<> + 664(SB)/8, $+281475245147134.9375 |
| DATA ·erfcrodataL38<> + 672(SB)/8, $.163116780021877404E+00 |
| DATA ·erfcrodataL38<> + 680(SB)/8, $-.201574395828120710E-01 |
| DATA ·erfcrodataL38<> + 688(SB)/8, $-.185726336009394125E-02 |
| DATA ·erfcrodataL38<> + 696(SB)/8, $.199349204957273749E-02 |
| DATA ·erfcrodataL38<> + 704(SB)/8, $-.554902415532606242E-03 |
| DATA ·erfcrodataL38<> + 712(SB)/8, $-.638914789660242846E-05 |
| DATA ·erfcrodataL38<> + 720(SB)/8, $-.424441522653742898E-04 |
| DATA ·erfcrodataL38<> + 728(SB)/8, $.827967511921486190E-04 |
| DATA ·erfcrodataL38<> + 736(SB)/8, $.913965446284062654E-05 |
| DATA ·erfcrodataL38<> + 744(SB)/8, $.277344791076320853E-05 |
| DATA ·erfcrodataL38<> + 752(SB)/8, $-.467239678927239526E-06 |
| DATA ·erfcrodataL38<> + 760(SB)/8, $.344814065920419986E-07 |
| DATA ·erfcrodataL38<> + 768(SB)/8, $-.366013491552527132E-05 |
| DATA ·erfcrodataL38<> + 776(SB)/8, $.181242810023783439E-05 |
| DATA ·erfcrodataL38<> + 784(SB)/8, $2.999999999991234567 |
| DATA ·erfcrodataL38<> + 792(SB)/8, $1.0 |
| GLOBL ·erfcrodataL38<> + 0(SB), RODATA, $800 |
| |
| // Table of log correction terms |
| DATA ·erfctab2069<> + 0(SB)/8, $0.442737824274138381e-01 |
| DATA ·erfctab2069<> + 8(SB)/8, $0.263602189790660309e-01 |
| DATA ·erfctab2069<> + 16(SB)/8, $0.122565642281703586e-01 |
| DATA ·erfctab2069<> + 24(SB)/8, $0.143757052860721398e-02 |
| DATA ·erfctab2069<> + 32(SB)/8, $-.651375034121276075e-02 |
| DATA ·erfctab2069<> + 40(SB)/8, $-.119317678849450159e-01 |
| DATA ·erfctab2069<> + 48(SB)/8, $-.150868749549871069e-01 |
| DATA ·erfctab2069<> + 56(SB)/8, $-.161992609578469234e-01 |
| DATA ·erfctab2069<> + 64(SB)/8, $-.154492360403337917e-01 |
| DATA ·erfctab2069<> + 72(SB)/8, $-.129850717389178721e-01 |
| DATA ·erfctab2069<> + 80(SB)/8, $-.892902649276657891e-02 |
| DATA ·erfctab2069<> + 88(SB)/8, $-.338202636596794887e-02 |
| DATA ·erfctab2069<> + 96(SB)/8, $0.357266307045684762e-02 |
| DATA ·erfctab2069<> + 104(SB)/8, $0.118665304327406698e-01 |
| DATA ·erfctab2069<> + 112(SB)/8, $0.214434994118118914e-01 |
| DATA ·erfctab2069<> + 120(SB)/8, $0.322580645161290314e-01 |
| GLOBL ·erfctab2069<> + 0(SB), RODATA, $128 |
| |
| // Erfc returns the complementary error function of the argument. |
| // |
| // Special cases are: |
| // Erfc(+Inf) = 0 |
| // Erfc(-Inf) = 2 |
| // Erfc(NaN) = NaN |
| // The algorithm used is minimax polynomial approximation |
| // with coefficients determined with a Remez exchange algorithm. |
| // This assembly implementation handles inputs in the range [-2.11, +15]. |
| // For all other inputs we call the generic Go implementation. |
| |
| TEXT ·erfcAsm(SB), NOSPLIT|NOFRAME, $0-16 |
| MOVD x+0(FP), R1 |
| MOVD $Neg2p11, R2 |
| CMPUBGT R1, R2, usego |
| |
| FMOVD x+0(FP), F0 |
| MOVD $·erfcrodataL38<>+0(SB), R9 |
| FMOVD F0, F2 |
| SRAD $48, R1 |
| MOVH R1, R2 |
| ANDW $0x7FFF, R1 |
| MOVH $Pos15, R3 |
| CMPW R1, R3 |
| BGT usego |
| MOVH $0x3FFF, R3 |
| MOVW R1, R6 |
| MOVW R3, R7 |
| CMPBGT R6, R7, L2 |
| MOVH $0x3FEF, R3 |
| MOVW R3, R7 |
| CMPBGT R6, R7, L3 |
| MOVH $0x2FFF, R2 |
| MOVW R2, R7 |
| CMPBGT R6, R7, L4 |
| FMOVD 792(R9), F0 |
| WFSDB V2, V0, V2 |
| FMOVD F2, ret+8(FP) |
| RET |
| |
| L2: |
| LTDBR F0, F0 |
| MOVH $0x0, R4 |
| BLTU L3 |
| FMOVD F0, F1 |
| L9: |
| MOVH $0x400F, R3 |
| MOVW R1, R6 |
| MOVW R3, R7 |
| CMPBGT R6, R7, L10 |
| FMOVD 784(R9), F3 |
| FSUB F1, F3 |
| VLEG $0, 776(R9), V20 |
| WFDDB V1, V3, V6 |
| VLEG $0, 768(R9), V18 |
| FMOVD 760(R9), F7 |
| FMOVD 752(R9), F5 |
| VLEG $0, 744(R9), V16 |
| FMOVD 736(R9), F3 |
| FMOVD 728(R9), F2 |
| FMOVD 720(R9), F4 |
| WFMDB V6, V6, V1 |
| FMUL F0, F0 |
| MOVH $0x0, R3 |
| WFMADB V1, V7, V20, V7 |
| WFMADB V1, V5, V18, V5 |
| WFMADB V1, V7, V16, V7 |
| WFMADB V1, V5, V3, V5 |
| WFMADB V1, V7, V4, V7 |
| WFMADB V1, V5, V2, V5 |
| FMOVD 712(R9), F2 |
| WFMADB V1, V7, V2, V7 |
| FMOVD 704(R9), F2 |
| WFMADB V1, V5, V2, V5 |
| FMOVD 696(R9), F2 |
| WFMADB V1, V7, V2, V7 |
| FMOVD 688(R9), F2 |
| MOVH $0x0, R1 |
| WFMADB V1, V5, V2, V5 |
| FMOVD 680(R9), F2 |
| WFMADB V1, V7, V2, V7 |
| FMOVD 672(R9), F2 |
| WFMADB V1, V5, V2, V1 |
| FMOVD 664(R9), F3 |
| WFMADB V6, V7, V1, V7 |
| FMOVD 656(R9), F5 |
| FMOVD 648(R9), F2 |
| WFMADB V0, V5, V3, V5 |
| WFMADB V6, V7, V2, V7 |
| L11: |
| LGDR F5, R6 |
| WFSDB V0, V0, V2 |
| WORD $0xED509298 //sdb %f5,.L55-.L38(%r9) |
| BYTE $0x00 |
| BYTE $0x1B |
| FMOVD 640(R9), F6 |
| FMOVD 632(R9), F4 |
| WFMSDB V5, V6, V2, V6 |
| WFMSDB V5, V4, V0, V4 |
| FMOVD 624(R9), F2 |
| FADD F6, F4 |
| FMOVD 616(R9), F0 |
| FMOVD 608(R9), F6 |
| WFMADB V4, V0, V2, V0 |
| FMOVD 600(R9), F3 |
| WFMDB V4, V4, V2 |
| MOVH R6,R6 |
| ADD R6, R3 |
| WFMADB V4, V3, V6, V3 |
| FMOVD 592(R9), F6 |
| WFMADB V0, V2, V3, V0 |
| FMOVD 584(R9), F3 |
| WFMADB V4, V6, V3, V6 |
| RISBGZ $57, $60, $3, R3, R12 |
| WFMADB V2, V0, V6, V0 |
| MOVD $·erfctab2069<>+0(SB), R5 |
| WORD $0x682C5000 //ld %f2,0(%r12,%r5) |
| FMADD F2, F4, F4 |
| RISBGN $0, $15, $48, R3, R4 |
| WFMADB V4, V0, V2, V4 |
| LDGR R4, F2 |
| FMADD F4, F2, F2 |
| MOVW R2, R6 |
| CMPBLE R6, $0, L20 |
| MOVW R1, R6 |
| CMPBEQ R6, $0, L21 |
| WORD $0xED709240 //mdb %f7,.L66-.L38(%r9) |
| BYTE $0x00 |
| BYTE $0x1C |
| L21: |
| FMUL F7, F2 |
| L1: |
| FMOVD F2, ret+8(FP) |
| RET |
| L3: |
| LTDBR F0, F0 |
| BLTU L30 |
| FMOVD 568(R9), F2 |
| WFSDB V0, V2, V0 |
| L8: |
| WFMDB V0, V0, V4 |
| FMOVD 560(R9), F2 |
| FMOVD 552(R9), F6 |
| FMOVD 544(R9), F1 |
| WFMADB V4, V6, V2, V6 |
| FMOVD 536(R9), F2 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 528(R9), F3 |
| FMOVD 520(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 512(R9), F3 |
| FMOVD 504(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 496(R9), F3 |
| FMOVD 488(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 480(R9), F3 |
| FMOVD 472(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 464(R9), F3 |
| FMOVD 456(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 448(R9), F3 |
| FMOVD 440(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 432(R9), F3 |
| FMOVD 424(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| WFMADB V4, V1, V2, V1 |
| FMOVD 416(R9), F3 |
| FMOVD 408(R9), F2 |
| WFMADB V4, V6, V3, V6 |
| FMADD F1, F4, F2 |
| FMADD F6, F0, F2 |
| MOVW R2, R6 |
| CMPBGE R6, $0, L1 |
| FMOVD 568(R9), F0 |
| WFSDB V2, V0, V2 |
| BR L1 |
| L10: |
| MOVH $0x401F, R3 |
| MOVW R1, R6 |
| MOVW R3, R7 |
| CMPBLE R6, R7, L36 |
| MOVH $0x402F, R3 |
| MOVW R3, R7 |
| CMPBGT R6, R7, L13 |
| FMOVD 400(R9), F3 |
| FSUB F1, F3 |
| VLEG $0, 392(R9), V20 |
| WFDDB V1, V3, V6 |
| VLEG $0, 384(R9), V18 |
| FMOVD 376(R9), F2 |
| FMOVD 368(R9), F4 |
| VLEG $0, 360(R9), V16 |
| FMOVD 352(R9), F7 |
| FMOVD 344(R9), F3 |
| FMUL F0, F0 |
| WFMDB V6, V6, V1 |
| FMOVD 656(R9), F5 |
| MOVH $0x0, R3 |
| WFMADB V1, V2, V20, V2 |
| WFMADB V1, V4, V18, V4 |
| WFMADB V1, V2, V16, V2 |
| WFMADB V1, V4, V7, V4 |
| WFMADB V1, V2, V3, V2 |
| FMOVD 336(R9), F3 |
| WFMADB V1, V4, V3, V4 |
| FMOVD 328(R9), F3 |
| WFMADB V1, V2, V3, V2 |
| FMOVD 320(R9), F3 |
| WFMADB V1, V4, V3, V1 |
| FMOVD 312(R9), F7 |
| WFMADB V6, V2, V1, V2 |
| MOVH $0x0, R1 |
| FMOVD 664(R9), F3 |
| FMADD F2, F6, F7 |
| WFMADB V0, V5, V3, V5 |
| BR L11 |
| L35: |
| WORD $0xB3130010 //lcdbr %f1,%f0 |
| BR L9 |
| L36: |
| FMOVD 304(R9), F3 |
| FSUB F1, F3 |
| VLEG $0, 296(R9), V20 |
| WFDDB V1, V3, V6 |
| FMOVD 288(R9), F5 |
| FMOVD 280(R9), F1 |
| FMOVD 272(R9), F2 |
| VLEG $0, 264(R9), V18 |
| VLEG $0, 256(R9), V16 |
| FMOVD 248(R9), F3 |
| FMOVD 240(R9), F4 |
| WFMDB V6, V6, V7 |
| FMUL F0, F0 |
| MOVH $0x0, R3 |
| FMADD F5, F7, F1 |
| WFMADB V7, V2, V20, V2 |
| WFMADB V7, V1, V18, V1 |
| WFMADB V7, V2, V16, V2 |
| WFMADB V7, V1, V3, V1 |
| WFMADB V7, V2, V4, V2 |
| FMOVD 232(R9), F4 |
| WFMADB V7, V1, V4, V1 |
| FMOVD 224(R9), F4 |
| WFMADB V7, V2, V4, V2 |
| FMOVD 216(R9), F4 |
| WFMADB V7, V1, V4, V1 |
| FMOVD 208(R9), F4 |
| MOVH $0x0, R1 |
| WFMADB V7, V2, V4, V7 |
| FMOVD 656(R9), F5 |
| WFMADB V6, V1, V7, V1 |
| FMOVD 664(R9), F3 |
| FMOVD 200(R9), F7 |
| WFMADB V0, V5, V3, V5 |
| FMADD F1, F6, F7 |
| BR L11 |
| L4: |
| FMOVD 192(R9), F1 |
| FMADD F0, F0, F1 |
| FMOVD 184(R9), F3 |
| WFMDB V1, V1, V0 |
| FMOVD 176(R9), F4 |
| FMOVD 168(R9), F6 |
| WFMADB V0, V4, V3, V4 |
| FMOVD 160(R9), F3 |
| WFMADB V0, V6, V3, V6 |
| FMOVD 152(R9), F5 |
| FMOVD 144(R9), F3 |
| WFMADB V0, V4, V5, V4 |
| WFMADB V0, V6, V3, V6 |
| FMOVD 136(R9), F5 |
| FMOVD 128(R9), F3 |
| WFMADB V0, V4, V5, V4 |
| WFMADB V0, V6, V3, V6 |
| FMOVD 120(R9), F5 |
| FMOVD 112(R9), F3 |
| WFMADB V0, V4, V5, V4 |
| WFMADB V0, V6, V3, V6 |
| FMOVD 104(R9), F5 |
| FMOVD 96(R9), F3 |
| WFMADB V0, V4, V5, V4 |
| WFMADB V0, V6, V3, V0 |
| FMOVD F2, F6 |
| FMADD F4, F1, F0 |
| WORD $0xED609318 //sdb %f6,.L39-.L38(%r9) |
| BYTE $0x00 |
| BYTE $0x1B |
| WFMSDB V2, V0, V6, V2 |
| FMOVD F2, ret+8(FP) |
| RET |
| L30: |
| WORD $0xED009238 //adb %f0,.L67-.L38(%r9) |
| BYTE $0x00 |
| BYTE $0x1A |
| BR L8 |
| L20: |
| FMOVD 88(R9), F0 |
| WFMADB V7, V2, V0, V2 |
| WORD $0xB3130022 //lcdbr %f2,%f2 |
| FMOVD F2, ret+8(FP) |
| RET |
| L13: |
| MOVH $0x403A, R3 |
| MOVW R1, R6 |
| MOVW R3, R7 |
| CMPBLE R6, R7, L4 |
| WORD $0xED109050 //cdb %f1,.L128-.L38(%r9) |
| BYTE $0x00 |
| BYTE $0x19 |
| BGE L37 |
| BVS L37 |
| FMOVD 72(R9), F6 |
| FSUB F1, F6 |
| MOVH $0x1000, R3 |
| FDIV F1, F6 |
| MOVH $0x1000, R1 |
| L17: |
| WFMDB V6, V6, V1 |
| FMOVD 64(R9), F2 |
| FMOVD 56(R9), F4 |
| FMOVD 48(R9), F3 |
| WFMADB V1, V3, V2, V3 |
| FMOVD 40(R9), F2 |
| WFMADB V1, V2, V4, V2 |
| FMOVD 32(R9), F4 |
| WFMADB V1, V3, V4, V3 |
| FMOVD 24(R9), F4 |
| WFMADB V1, V2, V4, V2 |
| FMOVD 16(R9), F4 |
| WFMADB V1, V3, V4, V3 |
| FMOVD 8(R9), F4 |
| WFMADB V1, V2, V4, V1 |
| FMUL F0, F0 |
| WFMADB V3, V6, V1, V3 |
| FMOVD 656(R9), F5 |
| FMOVD 664(R9), F4 |
| FMOVD 0(R9), F7 |
| WFMADB V0, V5, V4, V5 |
| FMADD F6, F3, F7 |
| BR L11 |
| L14: |
| FMOVD 72(R9), F6 |
| FSUB F1, F6 |
| MOVH $0x403A, R3 |
| FDIV F1, F6 |
| MOVW R1, R6 |
| MOVW R3, R7 |
| CMPBEQ R6, R7, L23 |
| MOVH $0x0, R3 |
| MOVH $0x0, R1 |
| BR L17 |
| L37: |
| WFCEDBS V0, V0, V0 |
| BVS L1 |
| MOVW R2, R6 |
| CMPBLE R6, $0, L18 |
| MOVH $0x7FEF, R2 |
| MOVW R1, R6 |
| MOVW R2, R7 |
| CMPBGT R6, R7, L24 |
| |
| WORD $0xA5400010 //iihh %r4,16 |
| LDGR R4, F2 |
| FMUL F2, F2 |
| BR L1 |
| L23: |
| MOVH $0x1000, R3 |
| MOVH $0x1000, R1 |
| BR L17 |
| L24: |
| FMOVD $0, F2 |
| BR L1 |
| L18: |
| MOVH $0x7FEF, R2 |
| MOVW R1, R6 |
| MOVW R2, R7 |
| CMPBGT R6, R7, L25 |
| WORD $0xA5408010 //iihh %r4,32784 |
| FMOVD 568(R9), F2 |
| LDGR R4, F0 |
| FMADD F2, F0, F2 |
| BR L1 |
| L25: |
| FMOVD 568(R9), F2 |
| BR L1 |
| usego: |
| BR ·erfc(SB) |