...

Text file src/math/acosh_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 ·acoshrodataL11<> + 0(SB)/8, $-1.0
     9DATA ·acoshrodataL11<> + 8(SB)/8, $.41375273347623353626
    10DATA ·acoshrodataL11<> + 16(SB)/8, $.51487302528619766235E+04
    11DATA ·acoshrodataL11<> + 24(SB)/8, $-1.67526912689208984375
    12DATA ·acoshrodataL11<> + 32(SB)/8, $0.181818181818181826E+00
    13DATA ·acoshrodataL11<> + 40(SB)/8, $-.165289256198351540E-01
    14DATA ·acoshrodataL11<> + 48(SB)/8, $0.200350613573012186E-02
    15DATA ·acoshrodataL11<> + 56(SB)/8, $-.273205381970859341E-03
    16DATA ·acoshrodataL11<> + 64(SB)/8, $0.397389654305194527E-04
    17DATA ·acoshrodataL11<> + 72(SB)/8, $0.938370938292558173E-06
    18DATA ·acoshrodataL11<> + 80(SB)/8, $-.602107458843052029E-05
    19DATA ·acoshrodataL11<> + 88(SB)/8, $0.212881813645679599E-07
    20DATA ·acoshrodataL11<> + 96(SB)/8, $-.148682720127920854E-06
    21DATA ·acoshrodataL11<> + 104(SB)/8, $-5.5
    22DATA ·acoshrodataL11<> + 112(SB)/8, $0x7ff8000000000000      //Nan
    23GLOBL ·acoshrodataL11<> + 0(SB), RODATA, $120
    24
    25// Table of log correction terms
    26DATA ·acoshtab2068<> + 0(SB)/8, $0.585235384085551248E-01
    27DATA ·acoshtab2068<> + 8(SB)/8, $0.412206153771168640E-01
    28DATA ·acoshtab2068<> + 16(SB)/8, $0.273839003221648339E-01
    29DATA ·acoshtab2068<> + 24(SB)/8, $0.166383778368856480E-01
    30DATA ·acoshtab2068<> + 32(SB)/8, $0.866678223433169637E-02
    31DATA ·acoshtab2068<> + 40(SB)/8, $0.319831684989627514E-02
    32DATA ·acoshtab2068<> + 48(SB)/8, $0.0
    33DATA ·acoshtab2068<> + 56(SB)/8, $-.113006378583725549E-02
    34DATA ·acoshtab2068<> + 64(SB)/8, $-.367979419636602491E-03
    35DATA ·acoshtab2068<> + 72(SB)/8, $0.213172484510484979E-02
    36DATA ·acoshtab2068<> + 80(SB)/8, $0.623271047682013536E-02
    37DATA ·acoshtab2068<> + 88(SB)/8, $0.118140812789696885E-01
    38DATA ·acoshtab2068<> + 96(SB)/8, $0.187681358930914206E-01
    39DATA ·acoshtab2068<> + 104(SB)/8, $0.269985148668178992E-01
    40DATA ·acoshtab2068<> + 112(SB)/8, $0.364186619761331328E-01
    41DATA ·acoshtab2068<> + 120(SB)/8, $0.469505379381388441E-01
    42GLOBL ·acoshtab2068<> + 0(SB), RODATA, $128
    43
    44// Acosh returns the inverse hyperbolic cosine of the argument.
    45//
    46// Special cases are:
    47//      Acosh(+Inf) = +Inf
    48//      Acosh(x) = NaN if x < 1
    49//      Acosh(NaN) = NaN
    50// The algorithm used is minimax polynomial approximation
    51// with coefficients determined with a Remez exchange algorithm.
    52
    53TEXT	·acoshAsm(SB), NOSPLIT, $0-16
    54	FMOVD	x+0(FP), F0
    55	MOVD	$·acoshrodataL11<>+0(SB), R9
    56	LGDR	F0, R1
    57	WORD	$0xC0295FEF	//iilf	%r2,1609564159
    58	BYTE	$0xFF
    59	BYTE	$0xFF
    60	SRAD	$32, R1
    61	CMPW	R1, R2
    62	BGT	L2
    63	WORD	$0xC0293FEF	//iilf	%r2,1072693247
    64	BYTE	$0xFF
    65	BYTE	$0xFF
    66	CMPW	R1, R2
    67	BGT	L10
    68L3:
    69	WFCEDBS	V0, V0, V2
    70	BVS	L1
    71	FMOVD	112(R9), F0
    72L1:
    73	FMOVD	F0, ret+8(FP)
    74	RET
    75L2:
    76	WORD	$0xC0297FEF	//iilf	%r2,2146435071
    77	BYTE	$0xFF
    78	BYTE	$0xFF
    79	MOVW	R1, R6
    80	MOVW	R2, R7
    81	CMPBGT	R6, R7, L1
    82	FMOVD	F0, F8
    83	FMOVD	$0, F0
    84	WFADB	V0, V8, V0
    85	WORD	$0xC0398006	//iilf	%r3,2147909631
    86	BYTE	$0x7F
    87	BYTE	$0xFF
    88	LGDR	F0, R5
    89	SRAD	$32, R5
    90	MOVH	$0x0, R1
    91	SUBW	R5, R3
    92	FMOVD	$0, F10
    93	RISBGZ	$32, $47, $0, R3, R4
    94	RISBGZ	$57, $60, $51, R3, R3
    95	BYTE	$0x18	//lr	%r2,%r4
    96	BYTE	$0x24
    97	RISBGN	$0, $31, $32, R4, R1
    98	SUBW	$0x100000, R2
    99	SRAW	$8, R2, R2
   100	ORW	$0x45000000, R2
   101L5:
   102	LDGR	R1, F0
   103	FMOVD	104(R9), F2
   104	FMADD	F8, F0, F2
   105	FMOVD	96(R9), F4
   106	WFMADB	V10, V0, V2, V0
   107	FMOVD	88(R9), F6
   108	FMOVD	80(R9), F2
   109	WFMADB	V0, V6, V4, V6
   110	FMOVD	72(R9), F1
   111	WFMDB	V0, V0, V4
   112	WFMADB	V0, V1, V2, V1
   113	FMOVD	64(R9), F2
   114	WFMADB	V6, V4, V1, V6
   115	FMOVD	56(R9), F1
   116	RISBGZ	$57, $60, $0, R3, R3
   117	WFMADB	V0, V2, V1, V2
   118	FMOVD	48(R9), F1
   119	WFMADB	V4, V6, V2, V6
   120	FMOVD	40(R9), F2
   121	WFMADB	V0, V1, V2, V1
   122	VLVGF	$0, R2, V2
   123	WFMADB	V4, V6, V1, V4
   124	LDEBR	F2, F2
   125	FMOVD	32(R9), F6
   126	WFMADB	V0, V4, V6, V4
   127	FMOVD	24(R9), F1
   128	FMOVD	16(R9), F6
   129	MOVD	$·acoshtab2068<>+0(SB), R1
   130	WFMADB	V2, V1, V6, V2
   131	FMOVD	0(R3)(R1*1), F3
   132	WFMADB	V0, V4, V3, V0
   133	FMOVD	8(R9), F4
   134	FMADD	F4, F2, F0
   135	FMOVD	F0, ret+8(FP)
   136	RET
   137L10:
   138	FMOVD	F0, F8
   139	FMOVD	0(R9), F0
   140	FMADD	F8, F8, F0
   141	LTDBR	F0, F0
   142	FSQRT	F0, F10
   143L4:
   144	WFADB	V10, V8, V0
   145	WORD	$0xC0398006	//iilf	%r3,2147909631
   146	BYTE	$0x7F
   147	BYTE	$0xFF
   148	LGDR	F0, R5
   149	SRAD	$32, R5
   150	MOVH	$0x0, R1
   151	SUBW	R5, R3
   152	SRAW	$8, R3, R2
   153	RISBGZ	$32, $47, $0, R3, R4
   154	ANDW	$0xFFFFFF00, R2
   155	RISBGZ	$57, $60, $51, R3, R3
   156	ORW	$0x45000000, R2
   157	RISBGN	$0, $31, $32, R4, R1
   158	BR	L5

View as plain text