...

Text file src/math/asinh_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 ·asinhrodataL18<> + 0(SB)/8, $0.749999999977387502E-01
     9DATA ·asinhrodataL18<> + 8(SB)/8, $-.166666666666657082E+00
    10DATA ·asinhrodataL18<> + 16(SB)/8, $0.303819368237360639E-01
    11DATA ·asinhrodataL18<> + 24(SB)/8, $-.446428569571752982E-01
    12DATA ·asinhrodataL18<> + 32(SB)/8, $0.173500047922695924E-01
    13DATA ·asinhrodataL18<> + 40(SB)/8, $-.223719767210027185E-01
    14DATA ·asinhrodataL18<> + 48(SB)/8, $0.113655037946822130E-01
    15DATA ·asinhrodataL18<> + 56(SB)/8, $0.579747490622448943E-02
    16DATA ·asinhrodataL18<> + 64(SB)/8, $-.139372433914359122E-01
    17DATA ·asinhrodataL18<> + 72(SB)/8, $-.218674325255800840E-02
    18DATA ·asinhrodataL18<> + 80(SB)/8, $-.891074277756961157E-02
    19DATA ·asinhrodataL18<> + 88(SB)/8, $.41375273347623353626
    20DATA ·asinhrodataL18<> + 96(SB)/8, $.51487302528619766235E+04
    21DATA ·asinhrodataL18<> + 104(SB)/8, $-1.67526912689208984375
    22DATA ·asinhrodataL18<> + 112(SB)/8, $0.181818181818181826E+00
    23DATA ·asinhrodataL18<> + 120(SB)/8, $-.165289256198351540E-01
    24DATA ·asinhrodataL18<> + 128(SB)/8, $0.200350613573012186E-02
    25DATA ·asinhrodataL18<> + 136(SB)/8, $-.273205381970859341E-03
    26DATA ·asinhrodataL18<> + 144(SB)/8, $0.397389654305194527E-04
    27DATA ·asinhrodataL18<> + 152(SB)/8, $0.938370938292558173E-06
    28DATA ·asinhrodataL18<> + 160(SB)/8, $0.212881813645679599E-07
    29DATA ·asinhrodataL18<> + 168(SB)/8, $-.602107458843052029E-05
    30DATA ·asinhrodataL18<> + 176(SB)/8, $-.148682720127920854E-06
    31DATA ·asinhrodataL18<> + 184(SB)/8, $-5.5
    32DATA ·asinhrodataL18<> + 192(SB)/8, $1.0
    33DATA ·asinhrodataL18<> + 200(SB)/8, $1.0E-20
    34GLOBL ·asinhrodataL18<> + 0(SB), RODATA, $208
    35
    36// Table of log correction terms
    37DATA ·asinhtab2080<> + 0(SB)/8, $0.585235384085551248E-01
    38DATA ·asinhtab2080<> + 8(SB)/8, $0.412206153771168640E-01
    39DATA ·asinhtab2080<> + 16(SB)/8, $0.273839003221648339E-01
    40DATA ·asinhtab2080<> + 24(SB)/8, $0.166383778368856480E-01
    41DATA ·asinhtab2080<> + 32(SB)/8, $0.866678223433169637E-02
    42DATA ·asinhtab2080<> + 40(SB)/8, $0.319831684989627514E-02
    43DATA ·asinhtab2080<> + 48(SB)/8, $0.0
    44DATA ·asinhtab2080<> + 56(SB)/8, $-.113006378583725549E-02
    45DATA ·asinhtab2080<> + 64(SB)/8, $-.367979419636602491E-03
    46DATA ·asinhtab2080<> + 72(SB)/8, $0.213172484510484979E-02
    47DATA ·asinhtab2080<> + 80(SB)/8, $0.623271047682013536E-02
    48DATA ·asinhtab2080<> + 88(SB)/8, $0.118140812789696885E-01
    49DATA ·asinhtab2080<> + 96(SB)/8, $0.187681358930914206E-01
    50DATA ·asinhtab2080<> + 104(SB)/8, $0.269985148668178992E-01
    51DATA ·asinhtab2080<> + 112(SB)/8, $0.364186619761331328E-01
    52DATA ·asinhtab2080<> + 120(SB)/8, $0.469505379381388441E-01
    53GLOBL ·asinhtab2080<> + 0(SB), RODATA, $128
    54
    55// Asinh returns the inverse hyperbolic sine of the argument.
    56//
    57// Special cases are:
    58//      Asinh(±0) = ±0
    59//      Asinh(±Inf) = ±Inf
    60//      Asinh(NaN) = NaN
    61// The algorithm used is minimax polynomial approximation
    62// with coefficients determined with a Remez exchange algorithm.
    63
    64TEXT	·asinhAsm(SB), NOSPLIT, $0-16
    65	FMOVD	x+0(FP), F0
    66	MOVD	$·asinhrodataL18<>+0(SB), R9
    67	LGDR	F0, R12
    68	WORD	$0xC0293FDF	//iilf	%r2,1071644671
    69	BYTE	$0xFF
    70	BYTE	$0xFF
    71	SRAD	$32, R12
    72	WORD	$0xB917001C	//llgtr	%r1,%r12
    73	MOVW	R1, R6
    74	MOVW	R2, R7
    75	CMPBLE	R6, R7, L2
    76	WORD	$0xC0295FEF	//iilf	%r2,1609564159
    77	BYTE	$0xFF
    78	BYTE	$0xFF
    79	MOVW	R2, R7
    80	CMPBLE	R6, R7, L14
    81L3:
    82	WORD	$0xC0297FEF	//iilf	%r2,2146435071
    83	BYTE	$0xFF
    84	BYTE	$0xFF
    85	CMPW	R1, R2
    86	BGT	L1
    87	LTDBR	F0, F0
    88	FMOVD	F0, F10
    89	BLTU	L15
    90L9:
    91	FMOVD	$0, F0
    92	WFADB	V0, V10, V0
    93	WORD	$0xC0398006	//iilf	%r3,2147909631
    94	BYTE	$0x7F
    95	BYTE	$0xFF
    96	LGDR	F0, R5
    97	SRAD	$32, R5
    98	MOVH	$0x0, R2
    99	SUBW	R5, R3
   100	FMOVD	$0, F8
   101	RISBGZ	$32, $47, $0, R3, R4
   102	BYTE	$0x18	//lr	%r1,%r4
   103	BYTE	$0x14
   104	RISBGN	$0, $31, $32, R4, R2
   105	SUBW	$0x100000, R1
   106	SRAW	$8, R1, R1
   107	ORW	$0x45000000, R1
   108	BR	L6
   109L2:
   110	MOVD	$0x30000000, R2
   111	CMPW	R1, R2
   112	BGT	L16
   113	FMOVD	200(R9), F2
   114	FMADD	F2, F0, F0
   115L1:
   116	FMOVD	F0, ret+8(FP)
   117	RET
   118L14:
   119	LTDBR	F0, F0
   120	BLTU	L17
   121	FMOVD	F0, F10
   122L4:
   123	FMOVD	192(R9), F2
   124	WFMADB	V0, V0, V2, V0
   125	LTDBR	F0, F0
   126	FSQRT	F0, F8
   127L5:
   128	WFADB	V8, V10, V0
   129	WORD	$0xC0398006	//iilf	%r3,2147909631
   130	BYTE	$0x7F
   131	BYTE	$0xFF
   132	LGDR	F0, R5
   133	SRAD	$32, R5
   134	MOVH	$0x0, R2
   135	SUBW	R5, R3
   136	RISBGZ	$32, $47, $0, R3, R4
   137	SRAW	$8, R4, R1
   138	RISBGN	$0, $31, $32, R4, R2
   139	ORW	$0x45000000, R1
   140L6:
   141	LDGR	R2, F2
   142	FMOVD	184(R9), F0
   143	WFMADB	V8, V2, V0, V8
   144	FMOVD	176(R9), F4
   145	WFMADB	V10, V2, V8, V2
   146	FMOVD	168(R9), F0
   147	FMOVD	160(R9), F6
   148	FMOVD	152(R9), F1
   149	WFMADB	V2, V6, V4, V6
   150	WFMADB	V2, V1, V0, V1
   151	WFMDB	V2, V2, V4
   152	FMOVD	144(R9), F0
   153	WFMADB	V6, V4, V1, V6
   154	FMOVD	136(R9), F1
   155	RISBGZ	$57, $60, $51, R3, R3
   156	WFMADB	V2, V0, V1, V0
   157	FMOVD	128(R9), F1
   158	WFMADB	V4, V6, V0, V6
   159	FMOVD	120(R9), F0
   160	WFMADB	V2, V1, V0, V1
   161	VLVGF	$0, R1, V0
   162	WFMADB	V4, V6, V1, V4
   163	LDEBR	F0, F0
   164	FMOVD	112(R9), F6
   165	WFMADB	V2, V4, V6, V4
   166	MOVD	$·asinhtab2080<>+0(SB), R1
   167	FMOVD	104(R9), F1
   168	WORD	$0x68331000	//ld	%f3,0(%r3,%r1)
   169	FMOVD	96(R9), F6
   170	WFMADB	V2, V4, V3, V2
   171	WFMADB	V0, V1, V6, V0
   172	FMOVD	88(R9), F4
   173	WFMADB	V0, V4, V2, V0
   174	MOVD	R12, R6
   175	CMPBGT	R6, $0, L1
   176
   177	WORD	$0xB3130000	//lcdbr	%f0,%f0
   178	FMOVD	F0, ret+8(FP)
   179	RET
   180L16:
   181	WFMDB	V0, V0, V1
   182	FMOVD	80(R9), F6
   183	WFMDB	V1, V1, V4
   184	FMOVD	72(R9), F2
   185	WFMADB	V4, V2, V6, V2
   186	FMOVD	64(R9), F3
   187	FMOVD	56(R9), F6
   188	WFMADB	V4, V2, V3, V2
   189	FMOVD	48(R9), F3
   190	WFMADB	V4, V6, V3, V6
   191	FMOVD	40(R9), F5
   192	FMOVD	32(R9), F3
   193	WFMADB	V4, V2, V5, V2
   194	WFMADB	V4, V6, V3, V6
   195	FMOVD	24(R9), F5
   196	FMOVD	16(R9), F3
   197	WFMADB	V4, V2, V5, V2
   198	WFMADB	V4, V6, V3, V6
   199	FMOVD	8(R9), F5
   200	FMOVD	0(R9), F3
   201	WFMADB	V4, V2, V5, V2
   202	WFMADB	V4, V6, V3, V4
   203	WFMDB	V0, V1, V6
   204	WFMADB	V1, V4, V2, V4
   205	FMADD	F4, F6, F0
   206	FMOVD	F0, ret+8(FP)
   207	RET
   208L17:
   209	WORD	$0xB31300A0	//lcdbr	%f10,%f0
   210	BR	L4
   211L15:
   212	WORD	$0xB31300A0	//lcdbr	%f10,%f0
   213	BR	L9

View as plain text