...

Text file src/math/erf_s390x.s

Documentation: math

     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// Minimax polynomial coefficients and other constants
     8DATA ·erfrodataL13<> + 0(SB)/8, $0.243673229298474689E+01
     9DATA ·erfrodataL13<> + 8(SB)/8, $-.654905018503145600E+00
    10DATA ·erfrodataL13<> + 16(SB)/8, $0.404669310217538718E+01
    11DATA ·erfrodataL13<> + 24(SB)/8, $-.564189219162765367E+00
    12DATA ·erfrodataL13<> + 32(SB)/8, $-.200104300906596851E+01
    13DATA ·erfrodataL13<> + 40(SB)/8, $0.5
    14DATA ·erfrodataL13<> + 48(SB)/8, $0.144070097650207154E+00
    15DATA ·erfrodataL13<> + 56(SB)/8, $-.116697735205906191E+00
    16DATA ·erfrodataL13<> + 64(SB)/8, $0.256847684882319665E-01
    17DATA ·erfrodataL13<> + 72(SB)/8, $-.510805169106229148E-02
    18DATA ·erfrodataL13<> + 80(SB)/8, $0.885258164825590267E-03
    19DATA ·erfrodataL13<> + 88(SB)/8, $-.133861989591931411E-03
    20DATA ·erfrodataL13<> + 96(SB)/8, $0.178294867340272534E-04
    21DATA ·erfrodataL13<> + 104(SB)/8, $-.211436095674019218E-05
    22DATA ·erfrodataL13<> + 112(SB)/8, $0.225503753499344434E-06
    23DATA ·erfrodataL13<> + 120(SB)/8, $-.218247939190783624E-07
    24DATA ·erfrodataL13<> + 128(SB)/8, $0.193179206264594029E-08
    25DATA ·erfrodataL13<> + 136(SB)/8, $-.157440643541715319E-09
    26DATA ·erfrodataL13<> + 144(SB)/8, $0.118878583237342616E-10
    27DATA ·erfrodataL13<> + 152(SB)/8, $0.554289288424588473E-13
    28DATA ·erfrodataL13<> + 160(SB)/8, $-.277649758489502214E-14
    29DATA ·erfrodataL13<> + 168(SB)/8, $-.839318416990049443E-12
    30DATA ·erfrodataL13<> + 176(SB)/8, $-2.25
    31DATA ·erfrodataL13<> + 184(SB)/8, $.12837916709551258632
    32DATA ·erfrodataL13<> + 192(SB)/8, $1.0
    33DATA ·erfrodataL13<> + 200(SB)/8, $0.500000000000004237e+00
    34DATA ·erfrodataL13<> + 208(SB)/8, $1.0
    35DATA ·erfrodataL13<> + 216(SB)/8, $0.416666664838056960e-01
    36DATA ·erfrodataL13<> + 224(SB)/8, $0.166666666630345592e+00
    37DATA ·erfrodataL13<> + 232(SB)/8, $0.138926439368309441e-02
    38DATA ·erfrodataL13<> + 240(SB)/8, $0.833349307718286047e-02
    39DATA ·erfrodataL13<> + 248(SB)/8, $-.693147180559945286e+00
    40DATA ·erfrodataL13<> + 256(SB)/8, $-.144269504088896339e+01
    41DATA ·erfrodataL13<> + 264(SB)/8, $281475245147134.9375
    42DATA ·erfrodataL13<> + 272(SB)/8, $0.358256136398192529E+01
    43DATA ·erfrodataL13<> + 280(SB)/8, $-.554084396500738270E+00
    44DATA ·erfrodataL13<> + 288(SB)/8, $0.203630123025312046E+02
    45DATA ·erfrodataL13<> + 296(SB)/8, $-.735750304705934424E+01
    46DATA ·erfrodataL13<> + 304(SB)/8, $0.250491598091071797E+02
    47DATA ·erfrodataL13<> + 312(SB)/8, $-.118955882760959931E+02
    48DATA ·erfrodataL13<> + 320(SB)/8, $0.942903335085524187E+01
    49DATA ·erfrodataL13<> + 328(SB)/8, $-.564189522219085689E+00
    50DATA ·erfrodataL13<> + 336(SB)/8, $-.503767199403555540E+01
    51DATA ·erfrodataL13<> + 344(SB)/8, $0xbbc79ca10c924223
    52DATA ·erfrodataL13<> + 352(SB)/8, $0.004099975562609307E+01
    53DATA ·erfrodataL13<> + 360(SB)/8, $-.324434353381296556E+00
    54DATA ·erfrodataL13<> + 368(SB)/8, $0.945204812084476250E-01
    55DATA ·erfrodataL13<> + 376(SB)/8, $-.221407443830058214E-01
    56DATA ·erfrodataL13<> + 384(SB)/8, $0.426072376238804349E-02
    57DATA ·erfrodataL13<> + 392(SB)/8, $-.692229229127016977E-03
    58DATA ·erfrodataL13<> + 400(SB)/8, $0.971111253652087188E-04
    59DATA ·erfrodataL13<> + 408(SB)/8, $-.119752226272050504E-04
    60DATA ·erfrodataL13<> + 416(SB)/8, $0.131662993588532278E-05
    61DATA ·erfrodataL13<> + 424(SB)/8, $0.115776482315851236E-07
    62DATA ·erfrodataL13<> + 432(SB)/8, $-.780118522218151687E-09
    63DATA ·erfrodataL13<> + 440(SB)/8, $-.130465975877241088E-06
    64DATA ·erfrodataL13<> + 448(SB)/8, $-0.25
    65GLOBL ·erfrodataL13<> + 0(SB), RODATA, $456
    66
    67// Table of log correction terms
    68DATA ·erftab2066<> + 0(SB)/8, $0.442737824274138381e-01
    69DATA ·erftab2066<> + 8(SB)/8, $0.263602189790660309e-01
    70DATA ·erftab2066<> + 16(SB)/8, $0.122565642281703586e-01
    71DATA ·erftab2066<> + 24(SB)/8, $0.143757052860721398e-02
    72DATA ·erftab2066<> + 32(SB)/8, $-.651375034121276075e-02
    73DATA ·erftab2066<> + 40(SB)/8, $-.119317678849450159e-01
    74DATA ·erftab2066<> + 48(SB)/8, $-.150868749549871069e-01
    75DATA ·erftab2066<> + 56(SB)/8, $-.161992609578469234e-01
    76DATA ·erftab2066<> + 64(SB)/8, $-.154492360403337917e-01
    77DATA ·erftab2066<> + 72(SB)/8, $-.129850717389178721e-01
    78DATA ·erftab2066<> + 80(SB)/8, $-.892902649276657891e-02
    79DATA ·erftab2066<> + 88(SB)/8, $-.338202636596794887e-02
    80DATA ·erftab2066<> + 96(SB)/8, $0.357266307045684762e-02
    81DATA ·erftab2066<> + 104(SB)/8, $0.118665304327406698e-01
    82DATA ·erftab2066<> + 112(SB)/8, $0.214434994118118914e-01
    83DATA ·erftab2066<> + 120(SB)/8, $0.322580645161290314e-01
    84GLOBL ·erftab2066<> + 0(SB), RODATA, $128
    85
    86// Table of +/- 1.0
    87DATA ·erftab12067<> + 0(SB)/8, $1.0
    88DATA ·erftab12067<> + 8(SB)/8, $-1.0
    89GLOBL ·erftab12067<> + 0(SB), RODATA, $16
    90
    91// Erf returns the error function of the argument.
    92//
    93// Special cases are:
    94//      Erf(+Inf) = 1
    95//      Erf(-Inf) = -1
    96//      Erf(NaN) = NaN
    97// The algorithm used is minimax polynomial approximation
    98// with coefficients determined with a Remez exchange algorithm.
    99
   100TEXT	·erfAsm(SB), NOSPLIT, $0-16
   101	FMOVD	x+0(FP), F0
   102	MOVD	$·erfrodataL13<>+0(SB), R5
   103	LGDR	F0, R1
   104	FMOVD	F0, F6
   105	SRAD	$48, R1
   106	MOVH	$16383, R3
   107	RISBGZ	$49, $63, $0, R1, R2
   108	MOVW	R2, R6
   109	MOVW	R3, R7
   110	CMPBGT	R6, R7, L2
   111	MOVH	$12287, R1
   112	MOVW	R1, R7
   113	CMPBLE	R6, R7 ,L12
   114	MOVH	$16367, R1
   115	MOVW	R1, R7
   116	CMPBGT	R6, R7, L5
   117	FMOVD	448(R5), F4
   118	FMADD	F0, F0, F4
   119	FMOVD	440(R5), F3
   120	WFMDB	V4, V4, V2
   121	FMOVD	432(R5), F0
   122	FMOVD	424(R5), F1
   123	WFMADB	V2, V0, V3, V0
   124	FMOVD	416(R5), F3
   125	WFMADB	V2, V1, V3, V1
   126	FMOVD	408(R5), F5
   127	FMOVD	400(R5), F3
   128	WFMADB	V2, V0, V5, V0
   129	WFMADB	V2, V1, V3, V1
   130	FMOVD	392(R5), F5
   131	FMOVD	384(R5), F3
   132	WFMADB	V2, V0, V5, V0
   133	WFMADB	V2, V1, V3, V1
   134	FMOVD	376(R5), F5
   135	FMOVD	368(R5), F3
   136	WFMADB	V2, V0, V5, V0
   137	WFMADB	V2, V1, V3, V1
   138	FMOVD	360(R5), F5
   139	FMOVD	352(R5), F3
   140	WFMADB	V2, V0, V5, V0
   141	WFMADB	V2, V1, V3, V2
   142	WFMADB	V4, V0, V2, V0
   143	WFMADB	V6, V0, V6, V0
   144L1:
   145	FMOVD	F0, ret+8(FP)
   146	RET
   147L2:
   148	MOVH	R1, R1
   149	MOVH	$16407, R3
   150	SRW	$31, R1, R1
   151	MOVW	R2, R6
   152	MOVW	R3, R7
   153	CMPBLE	R6, R7, L6
   154	MOVW	R1, R1
   155	SLD	$3, R1, R1
   156	MOVD	$·erftab12067<>+0(SB), R3
   157	WORD    $0x68013000     //ld %f0,0(%r1,%r3)
   158	MOVH	$32751, R1
   159	MOVW	R1, R7
   160	CMPBGT	R6, R7, L7
   161	FMOVD	344(R5), F2
   162	FMADD	F2, F0, F0
   163L7:
   164	WFCEDBS	V6, V6, V2
   165	BEQ	L1
   166	FMOVD	F6, F0
   167	FMOVD	F0, ret+8(FP)
   168	RET
   169
   170L6:
   171	MOVW	R1, R1
   172	SLD	$3, R1, R1
   173	MOVD	$·erftab12067<>+0(SB), R4
   174	WFMDB	V0, V0, V1
   175	MOVH	$0x0, R3
   176	WORD    $0x68014000     //ld %f0,0(%r1,%r4)
   177	MOVH	$16399, R1
   178	MOVW	R2, R6
   179	MOVW	R1, R7
   180	CMPBGT	R6, R7, L8
   181	FMOVD	336(R5), F3
   182	FMOVD	328(R5), F2
   183	FMOVD	F1, F4
   184	WFMADB	V1, V2, V3, V2
   185	WORD	$0xED405140	//adb %f4,.L30-.L13(%r5)
   186	BYTE	$0x00
   187	BYTE	$0x1A
   188	FMOVD	312(R5), F3
   189	WFMADB	V1, V2, V3, V2
   190	FMOVD	304(R5), F3
   191	WFMADB	V1, V4, V3, V4
   192	FMOVD	296(R5), F3
   193	WFMADB	V1, V2, V3, V2
   194	FMOVD	288(R5), F3
   195	WFMADB	V1, V4, V3, V4
   196	FMOVD	280(R5), F3
   197	WFMADB	V1, V2, V3, V2
   198	FMOVD	272(R5), F3
   199	WFMADB	V1, V4, V3, V4
   200L9:
   201	FMOVD	264(R5), F3
   202	FMUL	F4, F6
   203	FMOVD	256(R5), F4
   204	WFMADB	V1, V4, V3, V4
   205	FDIV	F6, F2
   206	LGDR	F4, R1
   207	FSUB	F3, F4
   208	FMOVD	248(R5), F6
   209	WFMSDB	V4, V6, V1, V4
   210	FMOVD	240(R5), F1
   211	FMOVD	232(R5), F6
   212	WFMADB	V4, V6, V1, V6
   213	FMOVD	224(R5), F1
   214	FMOVD	216(R5), F3
   215	WFMADB	V4, V3, V1, V3
   216	WFMDB	V4, V4, V1
   217	FMOVD	208(R5), F5
   218	WFMADB	V6, V1, V3, V6
   219	FMOVD	200(R5), F3
   220	MOVH	R1,R1
   221	WFMADB	V4, V3, V5, V3
   222	RISBGZ	$57, $60, $3, R1, R2
   223	WFMADB	V1, V6, V3, V6
   224	RISBGN	$0, $15, $48, R1, R3
   225	MOVD	$·erftab2066<>+0(SB), R1
   226	FMOVD	192(R5), F1
   227	LDGR	R3, F3
   228	WORD	$0xED221000	//madb %f2,%f2,0(%r2,%r1)
   229	BYTE	$0x20
   230	BYTE	$0x1E
   231	WFMADB	V4, V6, V1, V4
   232	FMUL	F3, F2
   233	FMADD	F4, F2, F0
   234	FMOVD	F0, ret+8(FP)
   235	RET
   236L12:
   237	FMOVD	184(R5), F0
   238	WFMADB	V6, V0, V6, V0
   239	FMOVD	F0, ret+8(FP)
   240	RET
   241L5:
   242	FMOVD	176(R5), F1
   243	FMADD	F0, F0, F1
   244	FMOVD	168(R5), F3
   245	WFMDB	V1, V1, V2
   246	FMOVD	160(R5), F0
   247	FMOVD	152(R5), F4
   248	WFMADB	V2, V0, V3, V0
   249	FMOVD	144(R5), F3
   250	WFMADB	V2, V4, V3, V4
   251	FMOVD	136(R5), F5
   252	FMOVD	128(R5), F3
   253	WFMADB	V2, V0, V5, V0
   254	WFMADB	V2, V4, V3, V4
   255	FMOVD	120(R5), F5
   256	FMOVD	112(R5), F3
   257	WFMADB	V2, V0, V5, V0
   258	WFMADB	V2, V4, V3, V4
   259	FMOVD	104(R5), F5
   260	FMOVD	96(R5), F3
   261	WFMADB	V2, V0, V5, V0
   262	WFMADB	V2, V4, V3, V4
   263	FMOVD	88(R5), F5
   264	FMOVD	80(R5), F3
   265	WFMADB	V2, V0, V5, V0
   266	WFMADB	V2, V4, V3, V4
   267	FMOVD	72(R5), F5
   268	FMOVD	64(R5), F3
   269	WFMADB	V2, V0, V5, V0
   270	WFMADB	V2, V4, V3, V4
   271	FMOVD	56(R5), F5
   272	FMOVD	48(R5), F3
   273	WFMADB	V2, V0, V5, V0
   274	WFMADB	V2, V4, V3, V2
   275	FMOVD	40(R5), F4
   276	WFMADB	V1, V0, V2, V0
   277	FMUL	F6, F0
   278	FMADD	F4, F6, F0
   279	FMOVD	F0, ret+8(FP)
   280	RET
   281L8:
   282	FMOVD	32(R5), F3
   283	FMOVD	24(R5), F2
   284	FMOVD	F1, F4
   285	WFMADB	V1, V2, V3, V2
   286	WORD	$0xED405010	//adb %f4,.L68-.L13(%r5)
   287	BYTE	$0x00
   288	BYTE	$0x1A
   289	FMOVD	8(R5), F3
   290	WFMADB	V1, V2, V3, V2
   291	FMOVD	·erfrodataL13<>+0(SB), F3
   292	WFMADB	V1, V4, V3, V4
   293	BR	L9

View as plain text