Commit f0fdbb1e authored by Michael Munday's avatar Michael Munday

math: consolidate assembly stub implementations

Where assembly functions are just jumps to the Go implementation
put them into a stubs_<arch>.s file. This reduces the number of
files considerably and makes it easier to see what is really
implemented in assembly.

I've also run the stubs files through asmfmt to format them in
a more consistent way.

Eventually we should replace these 'stub' assembly files with
a pure Go implementation now that we have mid-stack inlining
(see #31362).

Change-Id: If5b2022dcc23e1299f1b7ba79884f1b1263d0f7f
Reviewed-on: https://go-review.googlesource.com/c/go/+/173398
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 3d631662
// Copyright 2011 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"
TEXT ·Asin(SB),NOSPLIT,$0
JMP ·asin(SB)
TEXT ·Acos(SB),NOSPLIT,$0
JMP ·acos(SB)
// Copyright 2013 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 "asin_amd64.s"
// Copyright 2011 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"
TEXT ·Asin(SB),NOSPLIT,$0
B ·asin(SB)
TEXT ·Acos(SB),NOSPLIT,$0
B ·acos(SB)
// 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.
// +build 386 amd64 amd64p32 arm
#include "textflag.h"
TEXT ·Acosh(SB),NOSPLIT,$0
JMP ·acosh(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
JMP ·asinh(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
JMP ·atanh(SB)
// Copyright 2011 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"
TEXT ·Atan2(SB),NOSPLIT,$0
JMP ·atan2(SB)
// Copyright 2013 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 "atan2_amd64.s"
// Copyright 2011 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"
TEXT ·Atan2(SB),NOSPLIT,$0
B ·atan2(SB)
// Copyright 2011 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"
TEXT ·Atan(SB),NOSPLIT,$0
JMP ·atan(SB)
// Copyright 2013 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 "atan_amd64.s"
// Copyright 2011 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"
TEXT ·Atan(SB),NOSPLIT,$0
B ·atan(SB)
// 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.
// +build 386 amd64 amd64p32 arm
#include "textflag.h"
TEXT ·Cbrt(SB),NOSPLIT,$0
JMP ·cbrt(SB)
// Copyright 2011 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"
TEXT ·Max(SB),NOSPLIT,$0
JMP ·max(SB)
TEXT ·Min(SB),NOSPLIT,$0
JMP ·min(SB)
// Copyright 2011 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"
TEXT ·Min(SB),NOSPLIT,$0
B ·min(SB)
TEXT ·Max(SB),NOSPLIT,$0
B ·max(SB)
// 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.
// +build 386 amd64 amd64p32 arm
#include "textflag.h"
TEXT ·Erf(SB),NOSPLIT,$0
JMP ·erf(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
JMP ·erfc(SB)
// Copyright 2011 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"
TEXT ·Exp2(SB),NOSPLIT,$0
JMP ·exp2(SB)
// Copyright 2013 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 "exp2_amd64.s"
// Copyright 2011 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"
TEXT ·Exp2(SB),NOSPLIT,$0
B ·exp2(SB)
// Copyright 2010 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"
// func Exp(x float64) float64
TEXT ·Exp(SB),NOSPLIT,$0
// Used to use 387 assembly (FLDL2E+F2XM1) here,
// but it was both slower and less accurate than the portable Go code.
JMP ·exp(SB)
// Copyright 2011 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"
TEXT ·Exp(SB),NOSPLIT,$0
B ·exp(SB)
// Copyright 2011 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"
TEXT ·Expm1(SB),NOSPLIT,$0
JMP ·expm1(SB)
// Copyright 2013 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 "expm1_amd64.s"
// Copyright 2011 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"
TEXT ·Expm1(SB),NOSPLIT,$0
B ·expm1(SB)
// Copyright 2011 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"
TEXT ·Floor(SB),NOSPLIT,$0
B ·floor(SB)
TEXT ·Ceil(SB),NOSPLIT,$0
B ·ceil(SB)
TEXT ·Trunc(SB),NOSPLIT,$0
B ·trunc(SB)
// Copyright 2011 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"
TEXT ·Frexp(SB),NOSPLIT,$0
JMP ·frexp(SB)
// Copyright 2013 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 "frexp_amd64.s"
// Copyright 2011 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"
TEXT ·Frexp(SB),NOSPLIT,$0
B ·frexp(SB)
// Copyright 2011 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"
TEXT ·Hypot(SB),NOSPLIT,$0
B ·hypot(SB)
// Copyright 2011 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"
TEXT ·Ldexp(SB),NOSPLIT,$0
JMP ·ldexp(SB)
// Copyright 2013 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 "ldexp_amd64.s"
// Copyright 2011 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"
TEXT ·Ldexp(SB),NOSPLIT,$0
B ·ldexp(SB)
// Copyright 2011 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"
TEXT ·Log10(SB),NOSPLIT,$0
JMP ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
JMP ·log2(SB)
// Copyright 2013 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 "log10_amd64.s"
// Copyright 2011 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"
TEXT ·Log10(SB),NOSPLIT,$0
B ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
B ·log2(SB)
// Copyright 2011 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"
TEXT ·Log1p(SB),NOSPLIT,$0
JMP ·log1p(SB)
// Copyright 2013 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 "log1p_amd64.s"
// Copyright 2011 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"
TEXT ·Log1p(SB),NOSPLIT,$0
B ·log1p(SB)
// Copyright 2011 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"
TEXT ·Log(SB),NOSPLIT,$0
B ·log(SB)
// Copyright 2011 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"
TEXT ·Mod(SB),NOSPLIT,$0
JMP ·mod(SB)
// Copyright 2013 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 "mod_amd64.s"
// Copyright 2011 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"
TEXT ·Mod(SB),NOSPLIT,$0
B ·mod(SB)
// Copyright 2011 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"
TEXT ·Modf(SB),NOSPLIT,$0
JMP ·modf(SB)
// Copyright 2013 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 "modf_amd64.s"
// Copyright 2011 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"
TEXT ·Modf(SB),NOSPLIT,$0
B ·modf(SB)
// Copyright 2011 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"
TEXT ·Remainder(SB),NOSPLIT,$0
JMP ·remainder(SB)
// Copyright 2013 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 "remainder_amd64.s"
// Copyright 2011 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"
TEXT ·Remainder(SB),NOSPLIT,$0
B ·remainder(SB)
// Copyright 2009 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"
// func Cos(x float64) float64
TEXT ·Cos(SB),NOSPLIT,$0
JMP ·cos(SB)
// func Sin(x float64) float64
TEXT ·Sin(SB),NOSPLIT,$0
JMP ·sin(SB)
// Copyright 2010 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"
TEXT ·Sin(SB),NOSPLIT,$0
JMP ·sin(SB)
TEXT ·Cos(SB),NOSPLIT,$0
JMP ·cos(SB)
// Copyright 2013 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 "sin_amd64.s"
// Copyright 2010 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"
TEXT ·Sin(SB),NOSPLIT,$0
B ·sin(SB)
TEXT ·Cos(SB),NOSPLIT,$0
B ·cos(SB)
// Copyright 2016 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.
// +build 386 amd64 amd64p32 arm
#include "textflag.h"
TEXT ·Sinh(SB),NOSPLIT,$0
JMP ·sinh(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
JMP ·cosh(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
JMP ·tanh(SB)
// Copyright 2019 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"
TEXT ·Acosh(SB), NOSPLIT, $0
JMP ·acosh(SB)
TEXT ·Asinh(SB), NOSPLIT, $0
JMP ·asinh(SB)
TEXT ·Atanh(SB), NOSPLIT, $0
JMP ·atanh(SB)
TEXT ·Cbrt(SB), NOSPLIT, $0
JMP ·cbrt(SB)
TEXT ·Cos(SB), NOSPLIT, $0
JMP ·cos(SB)
TEXT ·Cosh(SB), NOSPLIT, $0
JMP ·cosh(SB)
TEXT ·Erf(SB), NOSPLIT, $0
JMP ·erf(SB)
TEXT ·Erfc(SB), NOSPLIT, $0
JMP ·erfc(SB)
TEXT ·Exp(SB), NOSPLIT, $0
JMP ·exp(SB)
TEXT ·Max(SB), NOSPLIT, $0
JMP ·max(SB)
TEXT ·Min(SB), NOSPLIT, $0
JMP ·min(SB)
TEXT ·Pow(SB), NOSPLIT, $0
JMP ·pow(SB)
TEXT ·Sin(SB), NOSPLIT, $0
JMP ·sin(SB)
TEXT ·Sinh(SB), NOSPLIT, $0
JMP ·sinh(SB)
TEXT ·Tan(SB), NOSPLIT, $0
JMP ·tan(SB)
TEXT ·Tanh(SB), NOSPLIT, $0
JMP ·tanh(SB)
// Copyright 2019 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"
TEXT ·Acos(SB), NOSPLIT, $0
JMP ·acos(SB)
TEXT ·Acosh(SB), NOSPLIT, $0
JMP ·acosh(SB)
TEXT ·Asin(SB), NOSPLIT, $0
JMP ·asin(SB)
TEXT ·Asinh(SB), NOSPLIT, $0
JMP ·asinh(SB)
TEXT ·Atan(SB), NOSPLIT, $0
JMP ·atan(SB)
TEXT ·Atan2(SB), NOSPLIT, $0
JMP ·atan2(SB)
TEXT ·Atanh(SB), NOSPLIT, $0
JMP ·atanh(SB)
TEXT ·Cbrt(SB), NOSPLIT, $0
JMP ·cbrt(SB)
TEXT ·Cos(SB), NOSPLIT, $0
JMP ·cos(SB)
TEXT ·Cosh(SB), NOSPLIT, $0
JMP ·cosh(SB)
TEXT ·Erf(SB), NOSPLIT, $0
JMP ·erf(SB)
TEXT ·Erfc(SB), NOSPLIT, $0
JMP ·erfc(SB)
TEXT ·Exp2(SB), NOSPLIT, $0
JMP ·exp2(SB)
TEXT ·Expm1(SB), NOSPLIT, $0
JMP ·expm1(SB)
TEXT ·Frexp(SB), NOSPLIT, $0
JMP ·frexp(SB)
TEXT ·Ldexp(SB), NOSPLIT, $0
JMP ·ldexp(SB)
TEXT ·Log10(SB), NOSPLIT, $0
JMP ·log10(SB)
TEXT ·Log2(SB), NOSPLIT, $0
JMP ·log2(SB)
TEXT ·Log1p(SB), NOSPLIT, $0
JMP ·log1p(SB)
TEXT ·Mod(SB), NOSPLIT, $0
JMP ·mod(SB)
TEXT ·Modf(SB), NOSPLIT, $0
JMP ·modf(SB)
TEXT ·Pow(SB), NOSPLIT, $0
JMP ·pow(SB)
TEXT ·Remainder(SB), NOSPLIT, $0
JMP ·remainder(SB)
TEXT ·Sin(SB), NOSPLIT, $0
JMP ·sin(SB)
TEXT ·Sinh(SB), NOSPLIT, $0
JMP ·sinh(SB)
TEXT ·Tan(SB), NOSPLIT, $0
JMP ·tan(SB)
TEXT ·Tanh(SB), NOSPLIT, $0
JMP ·tanh(SB)
......@@ -2,10 +2,4 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build 386 amd64 amd64p32 arm
#include "textflag.h"
TEXT ·Pow(SB),NOSPLIT,$0
JMP ·pow(SB)
#include "stubs_amd64.s"
// Copyright 2019 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"
TEXT ·Acos(SB), NOSPLIT, $0
B ·acos(SB)
TEXT ·Acosh(SB), NOSPLIT, $0
B ·acosh(SB)
TEXT ·Asin(SB), NOSPLIT, $0
B ·asin(SB)
TEXT ·Asinh(SB), NOSPLIT, $0
B ·asinh(SB)
TEXT ·Atan(SB), NOSPLIT, $0
B ·atan(SB)
TEXT ·Atan2(SB), NOSPLIT, $0
B ·atan2(SB)
TEXT ·Atanh(SB), NOSPLIT, $0
B ·atanh(SB)
TEXT ·Cbrt(SB), NOSPLIT, $0
B ·cbrt(SB)
TEXT ·Cos(SB), NOSPLIT, $0
B ·cos(SB)
TEXT ·Cosh(SB), NOSPLIT, $0
B ·cosh(SB)
TEXT ·Erf(SB), NOSPLIT, $0
B ·erf(SB)
TEXT ·Erfc(SB), NOSPLIT, $0
B ·erfc(SB)
TEXT ·Exp2(SB), NOSPLIT, $0
B ·exp2(SB)
TEXT ·Exp(SB), NOSPLIT, $0
B ·exp(SB)
TEXT ·Expm1(SB), NOSPLIT, $0
B ·expm1(SB)
TEXT ·Floor(SB), NOSPLIT, $0
B ·floor(SB)
TEXT ·Ceil(SB), NOSPLIT, $0
B ·ceil(SB)
TEXT ·Trunc(SB), NOSPLIT, $0
B ·trunc(SB)
TEXT ·Frexp(SB), NOSPLIT, $0
B ·frexp(SB)
TEXT ·Hypot(SB), NOSPLIT, $0
B ·hypot(SB)
TEXT ·Ldexp(SB), NOSPLIT, $0
B ·ldexp(SB)
TEXT ·Log10(SB), NOSPLIT, $0
B ·log10(SB)
TEXT ·Log2(SB), NOSPLIT, $0
B ·log2(SB)
TEXT ·Log1p(SB), NOSPLIT, $0
B ·log1p(SB)
TEXT ·Log(SB), NOSPLIT, $0
B ·log(SB)
TEXT ·Max(SB), NOSPLIT, $0
B ·max(SB)
TEXT ·Min(SB), NOSPLIT, $0
B ·min(SB)
TEXT ·Mod(SB), NOSPLIT, $0
B ·mod(SB)
TEXT ·Modf(SB), NOSPLIT, $0
B ·modf(SB)
TEXT ·Pow(SB), NOSPLIT, $0
JMP ·pow(SB)
TEXT ·Remainder(SB), NOSPLIT, $0
B ·remainder(SB)
TEXT ·Sin(SB), NOSPLIT, $0
B ·sin(SB)
TEXT ·Sinh(SB), NOSPLIT, $0
B ·sinh(SB)
TEXT ·Tan(SB), NOSPLIT, $0
B ·tan(SB)
TEXT ·Tanh(SB), NOSPLIT, $0
B ·tanh(SB)
......@@ -6,83 +6,83 @@
#include "textflag.h"
TEXT ·Asin(SB),NOSPLIT,$0
TEXT ·Asin(SB), NOSPLIT, $0
B ·asin(SB)
TEXT ·Acos(SB),NOSPLIT,$0
TEXT ·Acos(SB), NOSPLIT, $0
B ·acos(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
TEXT ·Asinh(SB), NOSPLIT, $0
B ·asinh(SB)
TEXT ·Acosh(SB),NOSPLIT,$0
TEXT ·Acosh(SB), NOSPLIT, $0
B ·acosh(SB)
TEXT ·Atan2(SB),NOSPLIT,$0
TEXT ·Atan2(SB), NOSPLIT, $0
B ·atan2(SB)
TEXT ·Atan(SB),NOSPLIT,$0
TEXT ·Atan(SB), NOSPLIT, $0
B ·atan(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
TEXT ·Atanh(SB), NOSPLIT, $0
B ·atanh(SB)
TEXT ·Erf(SB),NOSPLIT,$0
TEXT ·Erf(SB), NOSPLIT, $0
B ·erf(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
TEXT ·Erfc(SB), NOSPLIT, $0
B ·erfc(SB)
TEXT ·Cbrt(SB),NOSPLIT,$0
TEXT ·Cbrt(SB), NOSPLIT, $0
B ·cbrt(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
TEXT ·Cosh(SB), NOSPLIT, $0
B ·cosh(SB)
TEXT ·Expm1(SB),NOSPLIT,$0
TEXT ·Expm1(SB), NOSPLIT, $0
B ·expm1(SB)
TEXT ·Frexp(SB),NOSPLIT,$0
TEXT ·Frexp(SB), NOSPLIT, $0
B ·frexp(SB)
TEXT ·Hypot(SB),NOSPLIT,$0
TEXT ·Hypot(SB), NOSPLIT, $0
B ·hypot(SB)
TEXT ·Ldexp(SB),NOSPLIT,$0
TEXT ·Ldexp(SB), NOSPLIT, $0
B ·ldexp(SB)
TEXT ·Log10(SB),NOSPLIT,$0
TEXT ·Log10(SB), NOSPLIT, $0
B ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
TEXT ·Log2(SB), NOSPLIT, $0
B ·log2(SB)
TEXT ·Log1p(SB),NOSPLIT,$0
TEXT ·Log1p(SB), NOSPLIT, $0
B ·log1p(SB)
TEXT ·Log(SB),NOSPLIT,$0
TEXT ·Log(SB), NOSPLIT, $0
B ·log(SB)
TEXT ·Mod(SB),NOSPLIT,$0
TEXT ·Mod(SB), NOSPLIT, $0
B ·mod(SB)
TEXT ·Remainder(SB),NOSPLIT,$0
TEXT ·Remainder(SB), NOSPLIT, $0
B ·remainder(SB)
TEXT ·Sin(SB),NOSPLIT,$0
TEXT ·Sin(SB), NOSPLIT, $0
B ·sin(SB)
TEXT ·Sinh(SB),NOSPLIT,$0
TEXT ·Sinh(SB), NOSPLIT, $0
B ·sinh(SB)
TEXT ·Cos(SB),NOSPLIT,$0
TEXT ·Cos(SB), NOSPLIT, $0
B ·cos(SB)
TEXT ·Tan(SB),NOSPLIT,$0
TEXT ·Tan(SB), NOSPLIT, $0
B ·tan(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
TEXT ·Tanh(SB), NOSPLIT, $0
B ·tanh(SB)
TEXT ·Pow(SB),NOSPLIT,$0
TEXT ·Pow(SB), NOSPLIT, $0
B ·pow(SB)
......@@ -6,110 +6,110 @@
#include "textflag.h"
TEXT ·Asin(SB),NOSPLIT,$0
TEXT ·Asin(SB), NOSPLIT, $0
JMP ·asin(SB)
TEXT ·Acos(SB),NOSPLIT,$0
TEXT ·Acos(SB), NOSPLIT, $0
JMP ·acos(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
TEXT ·Asinh(SB), NOSPLIT, $0
JMP ·asinh(SB)
TEXT ·Acosh(SB),NOSPLIT,$0
TEXT ·Acosh(SB), NOSPLIT, $0
JMP ·acosh(SB)
TEXT ·Atan2(SB),NOSPLIT,$0
TEXT ·Atan2(SB), NOSPLIT, $0
JMP ·atan2(SB)
TEXT ·Atan(SB),NOSPLIT,$0
TEXT ·Atan(SB), NOSPLIT, $0
JMP ·atan(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
TEXT ·Atanh(SB), NOSPLIT, $0
JMP ·atanh(SB)
TEXT ·Min(SB),NOSPLIT,$0
TEXT ·Min(SB), NOSPLIT, $0
JMP ·min(SB)
TEXT ·Max(SB),NOSPLIT,$0
TEXT ·Max(SB), NOSPLIT, $0
JMP ·max(SB)
TEXT ·Erf(SB),NOSPLIT,$0
TEXT ·Erf(SB), NOSPLIT, $0
JMP ·erf(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
TEXT ·Erfc(SB), NOSPLIT, $0
JMP ·erfc(SB)
TEXT ·Exp2(SB),NOSPLIT,$0
TEXT ·Exp2(SB), NOSPLIT, $0
JMP ·exp2(SB)
TEXT ·Expm1(SB),NOSPLIT,$0
TEXT ·Expm1(SB), NOSPLIT, $0
JMP ·expm1(SB)
TEXT ·Exp(SB),NOSPLIT,$0
TEXT ·Exp(SB), NOSPLIT, $0
JMP ·exp(SB)
TEXT ·Floor(SB),NOSPLIT,$0
TEXT ·Floor(SB), NOSPLIT, $0
JMP ·floor(SB)
TEXT ·Ceil(SB),NOSPLIT,$0
TEXT ·Ceil(SB), NOSPLIT, $0
JMP ·ceil(SB)
TEXT ·Trunc(SB),NOSPLIT,$0
TEXT ·Trunc(SB), NOSPLIT, $0
JMP ·trunc(SB)
TEXT ·Frexp(SB),NOSPLIT,$0
TEXT ·Frexp(SB), NOSPLIT, $0
JMP ·frexp(SB)
TEXT ·Hypot(SB),NOSPLIT,$0
TEXT ·Hypot(SB), NOSPLIT, $0
JMP ·hypot(SB)
TEXT ·Ldexp(SB),NOSPLIT,$0
TEXT ·Ldexp(SB), NOSPLIT, $0
JMP ·ldexp(SB)
TEXT ·Log10(SB),NOSPLIT,$0
TEXT ·Log10(SB), NOSPLIT, $0
JMP ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
TEXT ·Log2(SB), NOSPLIT, $0
JMP ·log2(SB)
TEXT ·Log1p(SB),NOSPLIT,$0
TEXT ·Log1p(SB), NOSPLIT, $0
JMP ·log1p(SB)
TEXT ·Log(SB),NOSPLIT,$0
TEXT ·Log(SB), NOSPLIT, $0
JMP ·log(SB)
TEXT ·Modf(SB),NOSPLIT,$0
TEXT ·Modf(SB), NOSPLIT, $0
JMP ·modf(SB)
TEXT ·Mod(SB),NOSPLIT,$0
TEXT ·Mod(SB), NOSPLIT, $0
JMP ·mod(SB)
TEXT ·Remainder(SB),NOSPLIT,$0
TEXT ·Remainder(SB), NOSPLIT, $0
JMP ·remainder(SB)
TEXT ·Sin(SB),NOSPLIT,$0
TEXT ·Sin(SB), NOSPLIT, $0
JMP ·sin(SB)
TEXT ·Sinh(SB),NOSPLIT,$0
TEXT ·Sinh(SB), NOSPLIT, $0
JMP ·sinh(SB)
TEXT ·Cos(SB),NOSPLIT,$0
TEXT ·Cos(SB), NOSPLIT, $0
JMP ·cos(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
TEXT ·Cosh(SB), NOSPLIT, $0
JMP ·cosh(SB)
TEXT ·Sqrt(SB),NOSPLIT,$0
TEXT ·Sqrt(SB), NOSPLIT, $0
JMP ·sqrt(SB)
TEXT ·Tan(SB),NOSPLIT,$0
TEXT ·Tan(SB), NOSPLIT, $0
JMP ·tan(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
TEXT ·Tanh(SB), NOSPLIT, $0
JMP ·tanh(SB)
TEXT ·Cbrt(SB),NOSPLIT,$0
TEXT ·Cbrt(SB), NOSPLIT, $0
JMP ·cbrt(SB)
TEXT ·Pow(SB),NOSPLIT,$0
TEXT ·Pow(SB), NOSPLIT, $0
JMP ·pow(SB)
......@@ -6,108 +6,108 @@
#include "textflag.h"
TEXT ·Asin(SB),NOSPLIT,$0
TEXT ·Asin(SB), NOSPLIT, $0
JMP ·asin(SB)
TEXT ·Acos(SB),NOSPLIT,$0
TEXT ·Acos(SB), NOSPLIT, $0
JMP ·acos(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
TEXT ·Asinh(SB), NOSPLIT, $0
JMP ·asinh(SB)
TEXT ·Acosh(SB),NOSPLIT,$0
TEXT ·Acosh(SB), NOSPLIT, $0
JMP ·acosh(SB)
TEXT ·Atan2(SB),NOSPLIT,$0
TEXT ·Atan2(SB), NOSPLIT, $0
JMP ·atan2(SB)
TEXT ·Atan(SB),NOSPLIT,$0
TEXT ·Atan(SB), NOSPLIT, $0
JMP ·atan(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
TEXT ·Atanh(SB), NOSPLIT, $0
JMP ·atanh(SB)
TEXT ·Min(SB),NOSPLIT,$0
TEXT ·Min(SB), NOSPLIT, $0
JMP ·min(SB)
TEXT ·Max(SB),NOSPLIT,$0
TEXT ·Max(SB), NOSPLIT, $0
JMP ·max(SB)
TEXT ·Erf(SB),NOSPLIT,$0
TEXT ·Erf(SB), NOSPLIT, $0
JMP ·erf(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
TEXT ·Erfc(SB), NOSPLIT, $0
JMP ·erfc(SB)
TEXT ·Exp2(SB),NOSPLIT,$0
TEXT ·Exp2(SB), NOSPLIT, $0
JMP ·exp2(SB)
TEXT ·Expm1(SB),NOSPLIT,$0
TEXT ·Expm1(SB), NOSPLIT, $0
JMP ·expm1(SB)
TEXT ·Exp(SB),NOSPLIT,$0
TEXT ·Exp(SB), NOSPLIT, $0
JMP ·exp(SB)
TEXT ·Floor(SB),NOSPLIT,$0
TEXT ·Floor(SB), NOSPLIT, $0
JMP ·floor(SB)
TEXT ·Ceil(SB),NOSPLIT,$0
TEXT ·Ceil(SB), NOSPLIT, $0
JMP ·ceil(SB)
TEXT ·Trunc(SB),NOSPLIT,$0
TEXT ·Trunc(SB), NOSPLIT, $0
JMP ·trunc(SB)
TEXT ·Frexp(SB),NOSPLIT,$0
TEXT ·Frexp(SB), NOSPLIT, $0
JMP ·frexp(SB)
TEXT ·Hypot(SB),NOSPLIT,$0
TEXT ·Hypot(SB), NOSPLIT, $0
JMP ·hypot(SB)
TEXT ·Ldexp(SB),NOSPLIT,$0
TEXT ·Ldexp(SB), NOSPLIT, $0
JMP ·ldexp(SB)
TEXT ·Log10(SB),NOSPLIT,$0
TEXT ·Log10(SB), NOSPLIT, $0
JMP ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
TEXT ·Log2(SB), NOSPLIT, $0
JMP ·log2(SB)
TEXT ·Log1p(SB),NOSPLIT,$0
TEXT ·Log1p(SB), NOSPLIT, $0
JMP ·log1p(SB)
TEXT ·Log(SB),NOSPLIT,$0
TEXT ·Log(SB), NOSPLIT, $0
JMP ·log(SB)
TEXT ·Modf(SB),NOSPLIT,$0
TEXT ·Modf(SB), NOSPLIT, $0
JMP ·modf(SB)
TEXT ·Mod(SB),NOSPLIT,$0
TEXT ·Mod(SB), NOSPLIT, $0
JMP ·mod(SB)
TEXT ·Remainder(SB),NOSPLIT,$0
TEXT ·Remainder(SB), NOSPLIT, $0
JMP ·remainder(SB)
TEXT ·Sin(SB),NOSPLIT,$0
TEXT ·Sin(SB), NOSPLIT, $0
JMP ·sin(SB)
TEXT ·Sinh(SB),NOSPLIT,$0
TEXT ·Sinh(SB), NOSPLIT, $0
JMP ·sinh(SB)
TEXT ·Cos(SB),NOSPLIT,$0
TEXT ·Cos(SB), NOSPLIT, $0
JMP ·cos(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
TEXT ·Cosh(SB), NOSPLIT, $0
JMP ·cosh(SB)
TEXT ·Tan(SB),NOSPLIT,$0
TEXT ·Tan(SB), NOSPLIT, $0
JMP ·tan(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
TEXT ·Tanh(SB), NOSPLIT, $0
JMP ·tanh(SB)
TEXT ·Cbrt(SB),NOSPLIT,$0
TEXT ·Cbrt(SB), NOSPLIT, $0
JMP ·cbrt(SB)
TEXT ·Pow(SB),NOSPLIT,$0
TEXT ·Pow(SB), NOSPLIT, $0
JMP ·pow(SB)
......@@ -6,96 +6,96 @@
#include "textflag.h"
TEXT ·Asin(SB),NOSPLIT,$0
TEXT ·Asin(SB), NOSPLIT, $0
BR ·asin(SB)
TEXT ·Acos(SB),NOSPLIT,$0
TEXT ·Acos(SB), NOSPLIT, $0
BR ·acos(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
TEXT ·Asinh(SB), NOSPLIT, $0
BR ·asinh(SB)
TEXT ·Acosh(SB),NOSPLIT,$0
TEXT ·Acosh(SB), NOSPLIT, $0
BR ·acosh(SB)
TEXT ·Atan2(SB),NOSPLIT,$0
TEXT ·Atan2(SB), NOSPLIT, $0
BR ·atan2(SB)
TEXT ·Atan(SB),NOSPLIT,$0
TEXT ·Atan(SB), NOSPLIT, $0
BR ·atan(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
TEXT ·Atanh(SB), NOSPLIT, $0
BR ·atanh(SB)
TEXT ·Min(SB),NOSPLIT,$0
TEXT ·Min(SB), NOSPLIT, $0
BR ·min(SB)
TEXT ·Max(SB),NOSPLIT,$0
TEXT ·Max(SB), NOSPLIT, $0
BR ·max(SB)
TEXT ·Erf(SB),NOSPLIT,$0
TEXT ·Erf(SB), NOSPLIT, $0
BR ·erf(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
TEXT ·Erfc(SB), NOSPLIT, $0
BR ·erfc(SB)
TEXT ·Exp2(SB),NOSPLIT,$0
TEXT ·Exp2(SB), NOSPLIT, $0
BR ·exp2(SB)
TEXT ·Expm1(SB),NOSPLIT,$0
TEXT ·Expm1(SB), NOSPLIT, $0
BR ·expm1(SB)
TEXT ·Exp(SB),NOSPLIT,$0
TEXT ·Exp(SB), NOSPLIT, $0
BR ·exp(SB)
TEXT ·Frexp(SB),NOSPLIT,$0
TEXT ·Frexp(SB), NOSPLIT, $0
BR ·frexp(SB)
TEXT ·Hypot(SB),NOSPLIT,$0
TEXT ·Hypot(SB), NOSPLIT, $0
BR ·hypot(SB)
TEXT ·Ldexp(SB),NOSPLIT,$0
TEXT ·Ldexp(SB), NOSPLIT, $0
BR ·ldexp(SB)
TEXT ·Log10(SB),NOSPLIT,$0
TEXT ·Log10(SB), NOSPLIT, $0
BR ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
TEXT ·Log2(SB), NOSPLIT, $0
BR ·log2(SB)
TEXT ·Log1p(SB),NOSPLIT,$0
TEXT ·Log1p(SB), NOSPLIT, $0
BR ·log1p(SB)
TEXT ·Log(SB),NOSPLIT,$0
TEXT ·Log(SB), NOSPLIT, $0
BR ·log(SB)
TEXT ·Mod(SB),NOSPLIT,$0
TEXT ·Mod(SB), NOSPLIT, $0
BR ·mod(SB)
TEXT ·Remainder(SB),NOSPLIT,$0
TEXT ·Remainder(SB), NOSPLIT, $0
BR ·remainder(SB)
TEXT ·Sin(SB),NOSPLIT,$0
TEXT ·Sin(SB), NOSPLIT, $0
BR ·sin(SB)
TEXT ·Sinh(SB),NOSPLIT,$0
TEXT ·Sinh(SB), NOSPLIT, $0
BR ·sinh(SB)
TEXT ·Cos(SB),NOSPLIT,$0
TEXT ·Cos(SB), NOSPLIT, $0
BR ·cos(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
TEXT ·Cosh(SB), NOSPLIT, $0
BR ·cosh(SB)
TEXT ·Tan(SB),NOSPLIT,$0
TEXT ·Tan(SB), NOSPLIT, $0
BR ·tan(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
TEXT ·Tanh(SB), NOSPLIT, $0
BR ·tanh(SB)
TEXT ·Cbrt(SB),NOSPLIT,$0
TEXT ·Cbrt(SB), NOSPLIT, $0
BR ·cbrt(SB)
TEXT ·Pow(SB),NOSPLIT,$0
TEXT ·Pow(SB), NOSPLIT, $0
BR ·pow(SB)
......@@ -4,32 +4,32 @@
#include "textflag.h"
TEXT ·Exp2(SB),NOSPLIT,$0
TEXT ·Exp2(SB), NOSPLIT, $0
BR ·exp2(SB)
TEXT ·Frexp(SB),NOSPLIT,$0
TEXT ·Frexp(SB), NOSPLIT, $0
BR ·frexp(SB)
TEXT ·Hypot(SB),NOSPLIT,$0
TEXT ·Hypot(SB), NOSPLIT, $0
BR ·hypot(SB)
TEXT ·Ldexp(SB),NOSPLIT,$0
TEXT ·Ldexp(SB), NOSPLIT, $0
BR ·ldexp(SB)
TEXT ·Log2(SB),NOSPLIT,$0
TEXT ·Log2(SB), NOSPLIT, $0
BR ·log2(SB)
TEXT ·Modf(SB),NOSPLIT,$0
TEXT ·Modf(SB), NOSPLIT, $0
BR ·modf(SB)
TEXT ·Mod(SB),NOSPLIT,$0
TEXT ·Mod(SB), NOSPLIT, $0
BR ·mod(SB)
TEXT ·Remainder(SB),NOSPLIT,$0
TEXT ·Remainder(SB), NOSPLIT, $0
BR ·remainder(SB)
//if go assembly use vector instruction
TEXT ·hasVectorFacility(SB),NOSPLIT,$24-1
// if go assembly use vector instruction
TEXT ·hasVectorFacility(SB), NOSPLIT, $24-1
MOVD $x-24(SP), R1
XC $24, 0(R1), 0(R1) // clear the storage
MOVD $2, R0 // R0 is the number of double words stored -1
......@@ -38,6 +38,7 @@ TEXT ·hasVectorFacility(SB),NOSPLIT,$24-1
MOVBZ z-8(SP), R1
AND $0x40, R1
BEQ novector
vectorinstalled:
// check if the vector instruction has been enabled
VLEIB $0, $0xF, V16
......@@ -45,21 +46,23 @@ vectorinstalled:
CMPBNE R1, $0xF, novector
MOVB $1, ret+0(FP) // have vx
RET
novector:
MOVB $0, ret+0(FP) // no vx
RET
TEXT ·Log10(SB),NOSPLIT,$0
MOVD ·log10vectorfacility+0x00(SB),R1
TEXT ·Log10(SB), NOSPLIT, $0
MOVD ·log10vectorfacility+0x00(SB), R1
BR (R1)
TEXT ·log10TrampolineSetup(SB),NOSPLIT, $0
TEXT ·log10TrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD log10vectorfacility+0x00(SB), R1
MOVD log10(SB), R2
MOVD R2, 0(R1)
BR ·log10(SB)
vectorimpl:
MOVD log10vectorfacility+0x00(SB), R1
MOVD log10Asm(SB), R2
......@@ -69,18 +72,18 @@ vectorimpl:
GLOBL ·log10vectorfacility+0x00(SB), NOPTR, $8
DATA ·log10vectorfacility+0x00(SB)/8, log10TrampolineSetup(SB)
TEXT ·Cos(SB),NOSPLIT,$0
MOVD ·cosvectorfacility+0x00(SB),R1
TEXT ·Cos(SB), NOSPLIT, $0
MOVD ·cosvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·cosTrampolineSetup(SB),NOSPLIT, $0
TEXT ·cosTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD cosvectorfacility+0x00(SB), R1
MOVD cos(SB), R2
MOVD R2, 0(R1)
BR ·cos(SB)
vectorimpl:
MOVD cosvectorfacility+0x00(SB), R1
MOVD cosAsm(SB), R2
......@@ -90,18 +93,18 @@ vectorimpl:
GLOBL ·cosvectorfacility+0x00(SB), NOPTR, $8
DATA ·cosvectorfacility+0x00(SB)/8, cosTrampolineSetup(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
MOVD ·coshvectorfacility+0x00(SB),R1
TEXT ·Cosh(SB), NOSPLIT, $0
MOVD ·coshvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·coshTrampolineSetup(SB),NOSPLIT, $0
TEXT ·coshTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD coshvectorfacility+0x00(SB), R1
MOVD cosh(SB), R2
MOVD R2, 0(R1)
BR ·cosh(SB)
vectorimpl:
MOVD coshvectorfacility+0x00(SB), R1
MOVD coshAsm(SB), R2
......@@ -111,18 +114,18 @@ vectorimpl:
GLOBL ·coshvectorfacility+0x00(SB), NOPTR, $8
DATA ·coshvectorfacility+0x00(SB)/8, coshTrampolineSetup(SB)
TEXT ·Sin(SB),NOSPLIT,$0
MOVD ·sinvectorfacility+0x00(SB),R1
TEXT ·Sin(SB), NOSPLIT, $0
MOVD ·sinvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·sinTrampolineSetup(SB),NOSPLIT, $0
TEXT ·sinTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD sinvectorfacility+0x00(SB), R1
MOVD sin(SB), R2
MOVD R2, 0(R1)
BR ·sin(SB)
vectorimpl:
MOVD sinvectorfacility+0x00(SB), R1
MOVD sinAsm(SB), R2
......@@ -132,18 +135,18 @@ vectorimpl:
GLOBL ·sinvectorfacility+0x00(SB), NOPTR, $8
DATA ·sinvectorfacility+0x00(SB)/8, sinTrampolineSetup(SB)
TEXT ·Sinh(SB),NOSPLIT,$0
MOVD ·sinhvectorfacility+0x00(SB),R1
TEXT ·Sinh(SB), NOSPLIT, $0
MOVD ·sinhvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·sinhTrampolineSetup(SB),NOSPLIT, $0
TEXT ·sinhTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD sinhvectorfacility+0x00(SB), R1
MOVD sinh(SB), R2
MOVD R2, 0(R1)
BR ·sinh(SB)
vectorimpl:
MOVD sinhvectorfacility+0x00(SB), R1
MOVD sinhAsm(SB), R2
......@@ -153,18 +156,18 @@ vectorimpl:
GLOBL ·sinhvectorfacility+0x00(SB), NOPTR, $8
DATA ·sinhvectorfacility+0x00(SB)/8, sinhTrampolineSetup(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
MOVD ·tanhvectorfacility+0x00(SB),R1
TEXT ·Tanh(SB), NOSPLIT, $0
MOVD ·tanhvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·tanhTrampolineSetup(SB),NOSPLIT, $0
TEXT ·tanhTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD tanhvectorfacility+0x00(SB), R1
MOVD tanh(SB), R2
MOVD R2, 0(R1)
BR ·tanh(SB)
vectorimpl:
MOVD tanhvectorfacility+0x00(SB), R1
MOVD tanhAsm(SB), R2
......@@ -174,18 +177,18 @@ vectorimpl:
GLOBL ·tanhvectorfacility+0x00(SB), NOPTR, $8
DATA ·tanhvectorfacility+0x00(SB)/8, tanhTrampolineSetup(SB)
TEXT ·Log1p(SB),NOSPLIT,$0
MOVD ·log1pvectorfacility+0x00(SB),R1
TEXT ·Log1p(SB), NOSPLIT, $0
MOVD ·log1pvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·log1pTrampolineSetup(SB),NOSPLIT, $0
TEXT ·log1pTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD log1pvectorfacility+0x00(SB), R1
MOVD log1p(SB), R2
MOVD R2, 0(R1)
BR ·log1p(SB)
vectorimpl:
MOVD log1pvectorfacility+0x00(SB), R1
MOVD log1pAsm(SB), R2
......@@ -195,18 +198,18 @@ vectorimpl:
GLOBL ·log1pvectorfacility+0x00(SB), NOPTR, $8
DATA ·log1pvectorfacility+0x00(SB)/8, log1pTrampolineSetup(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
MOVD ·atanhvectorfacility+0x00(SB),R1
TEXT ·Atanh(SB), NOSPLIT, $0
MOVD ·atanhvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·atanhTrampolineSetup(SB),NOSPLIT, $0
TEXT ·atanhTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD atanhvectorfacility+0x00(SB), R1
MOVD atanh(SB), R2
MOVD R2, 0(R1)
BR ·atanh(SB)
vectorimpl:
MOVD atanhvectorfacility+0x00(SB), R1
MOVD atanhAsm(SB), R2
......@@ -216,18 +219,18 @@ vectorimpl:
GLOBL ·atanhvectorfacility+0x00(SB), NOPTR, $8
DATA ·atanhvectorfacility+0x00(SB)/8, atanhTrampolineSetup(SB)
TEXT ·Acos(SB),NOSPLIT,$0
MOVD ·acosvectorfacility+0x00(SB),R1
TEXT ·Acos(SB), NOSPLIT, $0
MOVD ·acosvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·acosTrampolineSetup(SB),NOSPLIT, $0
TEXT ·acosTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD acosvectorfacility+0x00(SB), R1
MOVD acos(SB), R2
MOVD R2, 0(R1)
BR ·acos(SB)
vectorimpl:
MOVD acosvectorfacility+0x00(SB), R1
MOVD acosAsm(SB), R2
......@@ -237,18 +240,18 @@ vectorimpl:
GLOBL ·acosvectorfacility+0x00(SB), NOPTR, $8
DATA ·acosvectorfacility+0x00(SB)/8, acosTrampolineSetup(SB)
TEXT ·Asin(SB),NOSPLIT,$0
MOVD ·asinvectorfacility+0x00(SB),R1
TEXT ·Asin(SB), NOSPLIT, $0
MOVD ·asinvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·asinTrampolineSetup(SB),NOSPLIT, $0
TEXT ·asinTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD asinvectorfacility+0x00(SB), R1
MOVD asin(SB), R2
MOVD R2, 0(R1)
BR ·asin(SB)
vectorimpl:
MOVD asinvectorfacility+0x00(SB), R1
MOVD asinAsm(SB), R2
......@@ -258,18 +261,18 @@ vectorimpl:
GLOBL ·asinvectorfacility+0x00(SB), NOPTR, $8
DATA ·asinvectorfacility+0x00(SB)/8, asinTrampolineSetup(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
MOVD ·asinhvectorfacility+0x00(SB),R1
TEXT ·Asinh(SB), NOSPLIT, $0
MOVD ·asinhvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·asinhTrampolineSetup(SB),NOSPLIT, $0
TEXT ·asinhTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD asinhvectorfacility+0x00(SB), R1
MOVD asinh(SB), R2
MOVD R2, 0(R1)
BR ·asinh(SB)
vectorimpl:
MOVD asinhvectorfacility+0x00(SB), R1
MOVD asinhAsm(SB), R2
......@@ -279,18 +282,18 @@ vectorimpl:
GLOBL ·asinhvectorfacility+0x00(SB), NOPTR, $8
DATA ·asinhvectorfacility+0x00(SB)/8, asinhTrampolineSetup(SB)
TEXT ·Acosh(SB),NOSPLIT,$0
MOVD ·acoshvectorfacility+0x00(SB),R1
TEXT ·Acosh(SB), NOSPLIT, $0
MOVD ·acoshvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·acoshTrampolineSetup(SB),NOSPLIT, $0
TEXT ·acoshTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD acoshvectorfacility+0x00(SB), R1
MOVD acosh(SB), R2
MOVD R2, 0(R1)
BR ·acosh(SB)
vectorimpl:
MOVD acoshvectorfacility+0x00(SB), R1
MOVD acoshAsm(SB), R2
......@@ -300,18 +303,18 @@ vectorimpl:
GLOBL ·acoshvectorfacility+0x00(SB), NOPTR, $8
DATA ·acoshvectorfacility+0x00(SB)/8, acoshTrampolineSetup(SB)
TEXT ·Erf(SB),NOSPLIT,$0
MOVD ·erfvectorfacility+0x00(SB),R1
TEXT ·Erf(SB), NOSPLIT, $0
MOVD ·erfvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·erfTrampolineSetup(SB),NOSPLIT, $0
TEXT ·erfTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD erfvectorfacility+0x00(SB), R1
MOVD erf(SB), R2
MOVD R2, 0(R1)
BR ·erf(SB)
vectorimpl:
MOVD erfvectorfacility+0x00(SB), R1
MOVD erfAsm(SB), R2
......@@ -321,18 +324,18 @@ vectorimpl:
GLOBL ·erfvectorfacility+0x00(SB), NOPTR, $8
DATA ·erfvectorfacility+0x00(SB)/8, erfTrampolineSetup(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
MOVD ·erfcvectorfacility+0x00(SB),R1
TEXT ·Erfc(SB), NOSPLIT, $0
MOVD ·erfcvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·erfcTrampolineSetup(SB),NOSPLIT, $0
TEXT ·erfcTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD erfcvectorfacility+0x00(SB), R1
MOVD erfc(SB), R2
MOVD R2, 0(R1)
BR ·erfc(SB)
vectorimpl:
MOVD erfcvectorfacility+0x00(SB), R1
MOVD erfcAsm(SB), R2
......@@ -342,18 +345,18 @@ vectorimpl:
GLOBL ·erfcvectorfacility+0x00(SB), NOPTR, $8
DATA ·erfcvectorfacility+0x00(SB)/8, erfcTrampolineSetup(SB)
TEXT ·Atan(SB),NOSPLIT,$0
MOVD ·atanvectorfacility+0x00(SB),R1
TEXT ·Atan(SB), NOSPLIT, $0
MOVD ·atanvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·atanTrampolineSetup(SB),NOSPLIT, $0
TEXT ·atanTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD atanvectorfacility+0x00(SB), R1
MOVD atan(SB), R2
MOVD R2, 0(R1)
BR ·atan(SB)
vectorimpl:
MOVD atanvectorfacility+0x00(SB), R1
MOVD atanAsm(SB), R2
......@@ -363,18 +366,18 @@ vectorimpl:
GLOBL ·atanvectorfacility+0x00(SB), NOPTR, $8
DATA ·atanvectorfacility+0x00(SB)/8, atanTrampolineSetup(SB)
TEXT ·Atan2(SB),NOSPLIT,$0
MOVD ·atan2vectorfacility+0x00(SB),R1
TEXT ·Atan2(SB), NOSPLIT, $0
MOVD ·atan2vectorfacility+0x00(SB), R1
BR (R1)
TEXT ·atan2TrampolineSetup(SB),NOSPLIT, $0
TEXT ·atan2TrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD atan2vectorfacility+0x00(SB), R1
MOVD atan2(SB), R2
MOVD R2, 0(R1)
BR ·atan2(SB)
vectorimpl:
MOVD atan2vectorfacility+0x00(SB), R1
MOVD atan2Asm(SB), R2
......@@ -384,18 +387,18 @@ vectorimpl:
GLOBL ·atan2vectorfacility+0x00(SB), NOPTR, $8
DATA ·atan2vectorfacility+0x00(SB)/8, atan2TrampolineSetup(SB)
TEXT ·Cbrt(SB),NOSPLIT,$0
MOVD ·cbrtvectorfacility+0x00(SB),R1
TEXT ·Cbrt(SB), NOSPLIT, $0
MOVD ·cbrtvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·cbrtTrampolineSetup(SB),NOSPLIT, $0
TEXT ·cbrtTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD cbrtvectorfacility+0x00(SB), R1
MOVD cbrt(SB), R2
MOVD R2, 0(R1)
BR ·cbrt(SB)
vectorimpl:
MOVD cbrtvectorfacility+0x00(SB), R1
MOVD cbrtAsm(SB), R2
......@@ -405,18 +408,18 @@ vectorimpl:
GLOBL ·cbrtvectorfacility+0x00(SB), NOPTR, $8
DATA ·cbrtvectorfacility+0x00(SB)/8, cbrtTrampolineSetup(SB)
TEXT ·Log(SB),NOSPLIT,$0
MOVD ·logvectorfacility+0x00(SB),R1
TEXT ·Log(SB), NOSPLIT, $0
MOVD ·logvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·logTrampolineSetup(SB),NOSPLIT, $0
TEXT ·logTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD logvectorfacility+0x00(SB), R1
MOVD log(SB), R2
MOVD R2, 0(R1)
BR ·log(SB)
vectorimpl:
MOVD logvectorfacility+0x00(SB), R1
MOVD logAsm(SB), R2
......@@ -426,18 +429,18 @@ vectorimpl:
GLOBL ·logvectorfacility+0x00(SB), NOPTR, $8
DATA ·logvectorfacility+0x00(SB)/8, logTrampolineSetup(SB)
TEXT ·Tan(SB),NOSPLIT,$0
MOVD ·tanvectorfacility+0x00(SB),R1
TEXT ·Tan(SB), NOSPLIT, $0
MOVD ·tanvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·tanTrampolineSetup(SB),NOSPLIT, $0
TEXT ·tanTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD tanvectorfacility+0x00(SB), R1
MOVD tan(SB), R2
MOVD R2, 0(R1)
BR ·tan(SB)
vectorimpl:
MOVD tanvectorfacility+0x00(SB), R1
MOVD tanAsm(SB), R2
......@@ -447,17 +450,18 @@ vectorimpl:
GLOBL ·tanvectorfacility+0x00(SB), NOPTR, $8
DATA ·tanvectorfacility+0x00(SB)/8, tanTrampolineSetup(SB)
TEXT ·Exp(SB),NOSPLIT,$0
MOVD ·expvectorfacility+0x00(SB),R1
TEXT ·Exp(SB), NOSPLIT, $0
MOVD ·expvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·expTrampolineSetup(SB),NOSPLIT, $0
TEXT ·expTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD expvectorfacility+0x00(SB), R1
MOVD exp(SB), R2
MOVD R2, 0(R1)
BR ·exp(SB)
vectorimpl:
MOVD expvectorfacility+0x00(SB), R1
MOVD expAsm(SB), R2
......@@ -467,18 +471,18 @@ vectorimpl:
GLOBL ·expvectorfacility+0x00(SB), NOPTR, $8
DATA ·expvectorfacility+0x00(SB)/8, expTrampolineSetup(SB)
TEXT ·Expm1(SB),NOSPLIT,$0
MOVD ·expm1vectorfacility+0x00(SB),R1
TEXT ·Expm1(SB), NOSPLIT, $0
MOVD ·expm1vectorfacility+0x00(SB), R1
BR (R1)
TEXT ·expm1TrampolineSetup(SB),NOSPLIT, $0
TEXT ·expm1TrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD expm1vectorfacility+0x00(SB), R1
MOVD expm1(SB), R2
MOVD R2, 0(R1)
BR ·expm1(SB)
vectorimpl:
MOVD expm1vectorfacility+0x00(SB), R1
MOVD expm1Asm(SB), R2
......@@ -488,18 +492,18 @@ vectorimpl:
GLOBL ·expm1vectorfacility+0x00(SB), NOPTR, $8
DATA ·expm1vectorfacility+0x00(SB)/8, expm1TrampolineSetup(SB)
TEXT ·Pow(SB),NOSPLIT,$0
MOVD ·powvectorfacility+0x00(SB),R1
TEXT ·Pow(SB), NOSPLIT, $0
MOVD ·powvectorfacility+0x00(SB), R1
BR (R1)
TEXT ·powTrampolineSetup(SB),NOSPLIT, $0
TEXT ·powTrampolineSetup(SB), NOSPLIT, $0
MOVB ·hasVX(SB), R1
CMPBEQ R1, $1, vectorimpl // vectorfacility = 1, vector supported
MOVD powvectorfacility+0x00(SB), R1
MOVD pow(SB), R2
MOVD R2, 0(R1)
BR ·pow(SB)
vectorimpl:
MOVD powvectorfacility+0x00(SB), R1
MOVD powAsm(SB), R2
......@@ -509,4 +513,3 @@ vectorimpl:
GLOBL ·powvectorfacility+0x00(SB), NOPTR, $8
DATA ·powvectorfacility+0x00(SB)/8, powTrampolineSetup(SB)
......@@ -4,98 +4,98 @@
#include "textflag.h"
TEXT ·Asin(SB),NOSPLIT,$0
TEXT ·Asin(SB), NOSPLIT, $0
JMP ·asin(SB)
TEXT ·Asinh(SB),NOSPLIT,$0
TEXT ·Asinh(SB), NOSPLIT, $0
JMP ·asinh(SB)
TEXT ·Acos(SB),NOSPLIT,$0
TEXT ·Acos(SB), NOSPLIT, $0
JMP ·acos(SB)
TEXT ·Acosh(SB),NOSPLIT,$0
TEXT ·Acosh(SB), NOSPLIT, $0
JMP ·acosh(SB)
TEXT ·Atan(SB),NOSPLIT,$0
TEXT ·Atan(SB), NOSPLIT, $0
JMP ·atan(SB)
TEXT ·Atanh(SB),NOSPLIT,$0
TEXT ·Atanh(SB), NOSPLIT, $0
JMP ·atanh(SB)
TEXT ·Atan2(SB),NOSPLIT,$0
TEXT ·Atan2(SB), NOSPLIT, $0
JMP ·atan2(SB)
TEXT ·Cbrt(SB),NOSPLIT,$0
TEXT ·Cbrt(SB), NOSPLIT, $0
JMP ·cbrt(SB)
TEXT ·Cos(SB),NOSPLIT,$0
TEXT ·Cos(SB), NOSPLIT, $0
JMP ·cos(SB)
TEXT ·Cosh(SB),NOSPLIT,$0
TEXT ·Cosh(SB), NOSPLIT, $0
JMP ·cosh(SB)
TEXT ·Erf(SB),NOSPLIT,$0
TEXT ·Erf(SB), NOSPLIT, $0
JMP ·erf(SB)
TEXT ·Erfc(SB),NOSPLIT,$0
TEXT ·Erfc(SB), NOSPLIT, $0
JMP ·erfc(SB)
TEXT ·Exp(SB),NOSPLIT,$0
TEXT ·Exp(SB), NOSPLIT, $0
JMP ·exp(SB)
TEXT ·Expm1(SB),NOSPLIT,$0
TEXT ·Expm1(SB), NOSPLIT, $0
JMP ·expm1(SB)
TEXT ·Exp2(SB),NOSPLIT,$0
TEXT ·Exp2(SB), NOSPLIT, $0
JMP ·exp2(SB)
TEXT ·Frexp(SB),NOSPLIT,$0
TEXT ·Frexp(SB), NOSPLIT, $0
JMP ·frexp(SB)
TEXT ·Hypot(SB),NOSPLIT,$0
TEXT ·Hypot(SB), NOSPLIT, $0
JMP ·hypot(SB)
TEXT ·Ldexp(SB),NOSPLIT,$0
TEXT ·Ldexp(SB), NOSPLIT, $0
JMP ·ldexp(SB)
TEXT ·Log(SB),NOSPLIT,$0
TEXT ·Log(SB), NOSPLIT, $0
JMP ·log(SB)
TEXT ·Log1p(SB),NOSPLIT,$0
TEXT ·Log1p(SB), NOSPLIT, $0
JMP ·log1p(SB)
TEXT ·Log10(SB),NOSPLIT,$0
TEXT ·Log10(SB), NOSPLIT, $0
JMP ·log10(SB)
TEXT ·Log2(SB),NOSPLIT,$0
TEXT ·Log2(SB), NOSPLIT, $0
JMP ·log2(SB)
TEXT ·Max(SB),NOSPLIT,$0
TEXT ·Max(SB), NOSPLIT, $0
JMP ·max(SB)
TEXT ·Min(SB),NOSPLIT,$0
TEXT ·Min(SB), NOSPLIT, $0
JMP ·min(SB)
TEXT ·Mod(SB),NOSPLIT,$0
TEXT ·Mod(SB), NOSPLIT, $0
JMP ·mod(SB)
TEXT ·Modf(SB),NOSPLIT,$0
TEXT ·Modf(SB), NOSPLIT, $0
JMP ·modf(SB)
TEXT ·Pow(SB),NOSPLIT,$0
TEXT ·Pow(SB), NOSPLIT, $0
JMP ·pow(SB)
TEXT ·Remainder(SB),NOSPLIT,$0
TEXT ·Remainder(SB), NOSPLIT, $0
JMP ·remainder(SB)
TEXT ·Sin(SB),NOSPLIT,$0
TEXT ·Sin(SB), NOSPLIT, $0
JMP ·sin(SB)
TEXT ·Sinh(SB),NOSPLIT,$0
TEXT ·Sinh(SB), NOSPLIT, $0
JMP ·sinh(SB)
TEXT ·Tan(SB),NOSPLIT,$0
TEXT ·Tan(SB), NOSPLIT, $0
JMP ·tan(SB)
TEXT ·Tanh(SB),NOSPLIT,$0
TEXT ·Tanh(SB), NOSPLIT, $0
JMP ·tanh(SB)
// Copyright 2010 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"
// func Tan(x float64) float64
TEXT ·Tan(SB),NOSPLIT,$0
JMP ·tan(SB)
// Copyright 2011 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"
TEXT ·Tan(SB),NOSPLIT,$0
JMP ·tan(SB)
// Copyright 2013 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 "tan_amd64.s"
// Copyright 2011 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"
TEXT ·Tan(SB),NOSPLIT,$0
B ·tan(SB)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment