// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include "textflag.h"

// Minimax polynomial approximations
DATA ·logrodataL21<> + 0(SB)/8, $-.499999999999999778E+00
DATA ·logrodataL21<> + 8(SB)/8, $0.333333333333343751E+00
DATA ·logrodataL21<> + 16(SB)/8, $-.250000000001606881E+00
DATA ·logrodataL21<> + 24(SB)/8, $0.199999999971603032E+00
DATA ·logrodataL21<> + 32(SB)/8, $-.166666663114122038E+00
DATA ·logrodataL21<> + 40(SB)/8, $-.125002923782692399E+00
DATA ·logrodataL21<> + 48(SB)/8, $0.111142014580396256E+00
DATA ·logrodataL21<> + 56(SB)/8, $0.759438932618934220E-01
DATA ·logrodataL21<> + 64(SB)/8, $0.142857144267212549E+00
DATA ·logrodataL21<> + 72(SB)/8, $-.993038938793590759E-01
DATA ·logrodataL21<> + 80(SB)/8, $-1.0
GLOBL ·logrodataL21<> + 0(SB), RODATA, $88

// Constants
DATA ·logxminf<> + 0(SB)/8, $0xfff0000000000000
GLOBL ·logxminf<> + 0(SB), RODATA, $8
DATA ·logxnan<> + 0(SB)/8, $0x7ff8000000000000
GLOBL ·logxnan<> + 0(SB), RODATA, $8
DATA ·logx43f<> + 0(SB)/8, $0x43f0000000000000
GLOBL ·logx43f<> + 0(SB), RODATA, $8
DATA ·logxl2<> + 0(SB)/8, $0x3fda7aecbeba4e46
GLOBL ·logxl2<> + 0(SB), RODATA, $8
DATA ·logxl1<> + 0(SB)/8, $0x3ffacde700000000
GLOBL ·logxl1<> + 0(SB), RODATA, $8

/* Input transform scale and add constants */
DATA ·logxm<> + 0(SB)/8, $0x3fc77604e63c84b1
DATA ·logxm<> + 8(SB)/8, $0x40fb39456ab53250
DATA ·logxm<> + 16(SB)/8, $0x3fc9ee358b945f3f
DATA ·logxm<> + 24(SB)/8, $0x40fb39418bf3b137
DATA ·logxm<> + 32(SB)/8, $0x3fccfb2e1304f4b6
DATA ·logxm<> + 40(SB)/8, $0x40fb393d3eda3022
DATA ·logxm<> + 48(SB)/8, $0x3fd0000000000000
DATA ·logxm<> + 56(SB)/8, $0x40fb393969e70000
DATA ·logxm<> + 64(SB)/8, $0x3fd11117aafbfe04
DATA ·logxm<> + 72(SB)/8, $0x40fb3936eaefafcf
DATA ·logxm<> + 80(SB)/8, $0x3fd2492af5e658b2
DATA ·logxm<> + 88(SB)/8, $0x40fb39343ff01715
DATA ·logxm<> + 96(SB)/8, $0x3fd3b50c622a43dd
DATA ·logxm<> + 104(SB)/8, $0x40fb39315adae2f3
DATA ·logxm<> + 112(SB)/8, $0x3fd56bbeea918777
DATA ·logxm<> + 120(SB)/8, $0x40fb392e21698552
GLOBL ·logxm<> + 0(SB), RODATA, $128

// Log returns the natural logarithm of the argument.
//
// Special cases are:
//      Log(+Inf) = +Inf
//      Log(0) = -Inf
//      Log(x < 0) = NaN
//      Log(NaN) = NaN
// The algorithm used is minimax polynomial approximation using a table of
// polynomial coefficients determined with a Remez exchange algorithm.

TEXT	·logAsm(SB), NOSPLIT, $0-16
	FMOVD	x+0(FP), F0
	MOVD	$·logrodataL21<>+0(SB), R9
	MOVH	$0x8006, R4
	LGDR	F0, R1
	MOVD	$0x3FF0000000000000, R6
	SRAD	$48, R1, R1
	MOVD	$0x40F03E8000000000, R8
	SUBW	R1, R4
	RISBGZ	$32, $59, $0, R4, R2
	RISBGN	$0, $15, $48, R2, R6
	RISBGN	$16, $31, $32, R2, R8
	MOVW	R1, R7
	CMPBGT	R7, $22, L17
	LTDBR	F0, F0
	MOVD	$·logx43f<>+0(SB), R1
	FMOVD	0(R1), F2
	BLEU	L3
	MOVH	$0x8005, R12
	MOVH	$0x8405, R0
	BR	L15
L7:
	LTDBR	F0, F0
	BLEU	L3
L15:
	FMUL	F2, F0
	LGDR	F0, R1
	SRAD	$48, R1, R1
	SUBW	R1, R0, R2
	SUBW	R1, R12, R3
	BYTE	$0x18	//lr	%r4,%r2
	BYTE	$0x42
	ANDW	$0xFFFFFFF0, R3
	ANDW	$0xFFFFFFF0, R2
	BYTE	$0x18	//lr	%r5,%r1
	BYTE	$0x51
	MOVW	R1, R7
	CMPBLE	R7, $22, L7
	RISBGN	$0, $15, $48, R3, R6
	RISBGN	$16, $31, $32, R2, R8
L2:
	MOVH	R5, R5
	MOVH	$0x7FEF, R1
	CMPW	R5, R1
	BGT	L1
	LDGR	R6, F2
	FMUL	F2, F0
	RISBGZ	$57, $59, $3, R4, R4
	FMOVD	80(R9), F2
	MOVD	$·logxm<>+0(SB), R7
	ADD	R7, R4
	FMOVD	72(R9), F4
	WORD	$0xED004000	//madb	%f2,%f0,0(%r4)
	BYTE	$0x20
	BYTE	$0x1E
	FMOVD	64(R9), F1
	FMOVD	F2, F0
	FMOVD	56(R9), F2
	WFMADB	V0, V2, V4, V2
	WFMDB	V0, V0, V6
	FMOVD	48(R9), F4
	WFMADB	V0, V2, V4, V2
	FMOVD	40(R9), F4
	WFMADB	V2, V6, V1, V2
	FMOVD	32(R9), F1
	WFMADB	V6, V4, V1, V4
	FMOVD	24(R9), F1
	WFMADB	V6, V2, V1, V2
	FMOVD	16(R9), F1
	WFMADB	V6, V4, V1, V4
	MOVD	$·logxl1<>+0(SB), R1
	FMOVD	8(R9), F1
	WFMADB	V6, V2, V1, V2
	FMOVD	0(R9), F1
	WFMADB	V6, V4, V1, V4
	FMOVD	8(R4), F1
	WFMADB	V0, V2, V4, V2
	LDGR	R8, F4
	WFMADB	V6, V2, V0, V2
	WORD	$0xED401000	//msdb	%f1,%f4,0(%r1)
	BYTE	$0x10
	BYTE	$0x1F
	MOVD	·logxl2<>+0(SB), R1
	WORD	$0xB3130001	//lcdbr	%f0,%f1
	LDGR	R1, F4
	WFMADB	V0, V4, V2, V0
L1:
	FMOVD	F0, ret+8(FP)
	RET
L3:
	LTDBR	F0, F0
	BEQ	L20
	BGE	L1
	BVS	L1

	MOVD	$·logxnan<>+0(SB), R1
	FMOVD	0(R1), F0
	BR	L1
L20:
	MOVD	$·logxminf<>+0(SB), R1
	FMOVD	0(R1), F0
	FMOVD	F0, ret+8(FP)
	RET
L17:
	BYTE	$0x18	//lr	%r5,%r1
	BYTE	$0x51
	BR	L2
