...

Text file src/pkg/math/acos_s390x.s

     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
     8	DATA ·acosrodataL13<> + 0(SB)/8, $0.314159265358979323E+01   //pi
     9	DATA ·acosrodataL13<> + 8(SB)/8, $-0.0
    10	DATA ·acosrodataL13<> + 16(SB)/8, $0x7ff8000000000000    //Nan
    11	DATA ·acosrodataL13<> + 24(SB)/8, $-1.0
    12	DATA ·acosrodataL13<> + 32(SB)/8, $1.0
    13	DATA ·acosrodataL13<> + 40(SB)/8, $0.166666666666651626E+00
    14	DATA ·acosrodataL13<> + 48(SB)/8, $0.750000000042621169E-01
    15	DATA ·acosrodataL13<> + 56(SB)/8, $0.446428567178116477E-01
    16	DATA ·acosrodataL13<> + 64(SB)/8, $0.303819660378071894E-01
    17	DATA ·acosrodataL13<> + 72(SB)/8, $0.223715011892010405E-01
    18	DATA ·acosrodataL13<> + 80(SB)/8, $0.173659424522364952E-01
    19	DATA ·acosrodataL13<> + 88(SB)/8, $0.137810186504372266E-01
    20	DATA ·acosrodataL13<> + 96(SB)/8, $0.134066870961173521E-01
    21	DATA ·acosrodataL13<> + 104(SB)/8, $-.412335502831898721E-02
    22	DATA ·acosrodataL13<> + 112(SB)/8, $0.867383739532082719E-01
    23	DATA ·acosrodataL13<> + 120(SB)/8, $-.328765950607171649E+00
    24	DATA ·acosrodataL13<> + 128(SB)/8, $0.110401073869414626E+01
    25	DATA ·acosrodataL13<> + 136(SB)/8, $-.270694366992537307E+01
    26	DATA ·acosrodataL13<> + 144(SB)/8, $0.500196500770928669E+01
    27	DATA ·acosrodataL13<> + 152(SB)/8, $-.665866959108585165E+01
    28	DATA ·acosrodataL13<> + 160(SB)/8, $-.344895269334086578E+01
    29	DATA ·acosrodataL13<> + 168(SB)/8, $0.927437952918301659E+00
    30	DATA ·acosrodataL13<> + 176(SB)/8, $0.610487478874645653E+01
    31	DATA ·acosrodataL13<> + 184(SB)/8, $0.157079632679489656e+01
    32	DATA ·acosrodataL13<> + 192(SB)/8, $0.0
    33	GLOBL ·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	
    42	TEXT	·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
    57	L3:
    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
    98	L1:
    99		FMOVD	F10, ret+8(FP)
   100		RET
   101	
   102	L2:
   103		WORD	$0xC0293FEF	//iilf	%r2,1072693247
   104		BYTE	$0xFF
   105		BYTE	$0xFF
   106		CMPW	R1, R2
   107		BLE	L12
   108	L4:
   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
   121	L12:
   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
   129	L5:
   130		MOVW	R12, R4
   131		CMPBLE	R4, $0, L7
   132		WORD	$0xB31300AA	//lcdbr	%f10,%f10
   133		FMOVD	$0, F1
   134		BR	L3
   135	L9:
   136		FMOVD	0(R9), F10
   137		BR	L1
   138	L8:
   139		FMOVD	$0, F0
   140		FMOVD	F0, ret+8(FP)
   141		RET
   142	L7:
   143		FMOVD	0(R9), F1
   144		BR	L3

View as plain text