...

Text file src/math/acos_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 ·acosrodataL13<> + 0(SB)/8, $0.314159265358979323E+01   //pi
     9DATA ·acosrodataL13<> + 8(SB)/8, $-0.0
    10DATA ·acosrodataL13<> + 16(SB)/8, $0x7ff8000000000000    //Nan
    11DATA ·acosrodataL13<> + 24(SB)/8, $-1.0
    12DATA ·acosrodataL13<> + 32(SB)/8, $1.0
    13DATA ·acosrodataL13<> + 40(SB)/8, $0.166666666666651626E+00
    14DATA ·acosrodataL13<> + 48(SB)/8, $0.750000000042621169E-01
    15DATA ·acosrodataL13<> + 56(SB)/8, $0.446428567178116477E-01
    16DATA ·acosrodataL13<> + 64(SB)/8, $0.303819660378071894E-01
    17DATA ·acosrodataL13<> + 72(SB)/8, $0.223715011892010405E-01
    18DATA ·acosrodataL13<> + 80(SB)/8, $0.173659424522364952E-01
    19DATA ·acosrodataL13<> + 88(SB)/8, $0.137810186504372266E-01
    20DATA ·acosrodataL13<> + 96(SB)/8, $0.134066870961173521E-01
    21DATA ·acosrodataL13<> + 104(SB)/8, $-.412335502831898721E-02
    22DATA ·acosrodataL13<> + 112(SB)/8, $0.867383739532082719E-01
    23DATA ·acosrodataL13<> + 120(SB)/8, $-.328765950607171649E+00
    24DATA ·acosrodataL13<> + 128(SB)/8, $0.110401073869414626E+01
    25DATA ·acosrodataL13<> + 136(SB)/8, $-.270694366992537307E+01
    26DATA ·acosrodataL13<> + 144(SB)/8, $0.500196500770928669E+01
    27DATA ·acosrodataL13<> + 152(SB)/8, $-.665866959108585165E+01
    28DATA ·acosrodataL13<> + 160(SB)/8, $-.344895269334086578E+01
    29DATA ·acosrodataL13<> + 168(SB)/8, $0.927437952918301659E+00
    30DATA ·acosrodataL13<> + 176(SB)/8, $0.610487478874645653E+01
    31DATA ·acosrodataL13<> + 184(SB)/8, $0.157079632679489656e+01
    32DATA ·acosrodataL13<> + 192(SB)/8, $0.0
    33GLOBL ·acosrodataL13<> + 0(SB), RODATA, $200
    34
    35// Acos returns the arccosine, in radians, of the argument.
    36//
    37// Special case is:
    38//      Acos(x) = NaN if x < -1 or x > 1
    39// The algorithm used is minimax polynomial approximation
    40// with coefficients determined with a Remez exchange algorithm.
    41
    42TEXT	·acosAsm(SB), NOSPLIT, $0-16
    43	FMOVD	x+0(FP), F0
    44	MOVD	$·acosrodataL13<>+0(SB), R9
    45	LGDR	F0, R12
    46	FMOVD	F0, F10
    47	SRAD	$32, R12
    48	WORD	$0xC0293FE6	//iilf	%r2,1072079005
    49	BYTE	$0xA0
    50	BYTE	$0x9D
    51	WORD	$0xB917001C	//llgtr	%r1,%r12
    52	CMPW	R1,R2
    53	BGT	L2
    54	FMOVD	192(R9), F8
    55	FMADD	F0, F0, F8
    56	FMOVD	184(R9), F1
    57L3:
    58	WFMDB	V8, V8, V2
    59	FMOVD	176(R9), F6
    60	FMOVD	168(R9), F0
    61	FMOVD	160(R9), F4
    62	WFMADB	V2, V0, V6, V0
    63	FMOVD	152(R9), F6
    64	WFMADB	V2, V4, V6, V4
    65	FMOVD	144(R9), F6
    66	WFMADB	V2, V0, V6, V0
    67	FMOVD	136(R9), F6
    68	WFMADB	V2, V4, V6, V4
    69	FMOVD	128(R9), F6
    70	WFMADB	V2, V0, V6, V0
    71	FMOVD	120(R9), F6
    72	WFMADB	V2, V4, V6, V4
    73	FMOVD	112(R9), F6
    74	WFMADB	V2, V0, V6, V0
    75	FMOVD	104(R9), F6
    76	WFMADB	V2, V4, V6, V4
    77	FMOVD	96(R9), F6
    78	WFMADB	V2, V0, V6, V0
    79	FMOVD	88(R9), F6
    80	WFMADB	V2, V4, V6, V4
    81	FMOVD	80(R9), F6
    82	WFMADB	V2, V0, V6, V0
    83	FMOVD	72(R9), F6
    84	WFMADB	V2, V4, V6, V4
    85	FMOVD	64(R9), F6
    86	WFMADB	V2, V0, V6, V0
    87	FMOVD	56(R9), F6
    88	WFMADB	V2, V4, V6, V4
    89	FMOVD	48(R9), F6
    90	WFMADB	V2, V0, V6, V0
    91	FMOVD	40(R9), F6
    92	WFMADB	V2, V4, V6, V2
    93	FMOVD	192(R9), F4
    94	WFMADB	V8, V0, V2, V0
    95	WFMADB	V10, V8, V4, V8
    96	FMADD	F0, F8, F10
    97	WFSDB	V10, V1, V10
    98L1:
    99	FMOVD	F10, ret+8(FP)
   100	RET
   101
   102L2:
   103	WORD	$0xC0293FEF	//iilf	%r2,1072693247
   104	BYTE	$0xFF
   105	BYTE	$0xFF
   106	CMPW	R1, R2
   107	BLE	L12
   108L4:
   109	WORD	$0xED009020	//cdb	%f0,.L34-.L13(%r9)
   110	BYTE	$0x00
   111	BYTE	$0x19
   112	BEQ	L8
   113	WORD	$0xED009018	//cdb	%f0,.L35-.L13(%r9)
   114	BYTE	$0x00
   115	BYTE	$0x19
   116	BEQ	L9
   117	WFCEDBS	V10, V10, V0
   118	BVS	L1
   119	FMOVD	16(R9), F10
   120	BR	L1
   121L12:
   122	FMOVD	24(R9), F0
   123	FMADD	F10, F10, F0
   124	WORD	$0xB3130080	//lcdbr	%f8,%f0
   125	WORD	$0xED009008	//cdb	%f0,.L37-.L13(%r9)
   126	BYTE	$0x00
   127	BYTE	$0x19
   128	FSQRT	F8, F10
   129L5:
   130	MOVW	R12, R4
   131	CMPBLE	R4, $0, L7
   132	WORD	$0xB31300AA	//lcdbr	%f10,%f10
   133	FMOVD	$0, F1
   134	BR	L3
   135L9:
   136	FMOVD	0(R9), F10
   137	BR	L1
   138L8:
   139	FMOVD	$0, F0
   140	FMOVD	F0, ret+8(FP)
   141	RET
   142L7:
   143	FMOVD	0(R9), F1
   144	BR	L3

View as plain text