1
0
mirror of https://github.com/golang/go synced 2024-09-29 13:24:28 -06:00

math: support to handle huge arguments in tan function on s390x

Currently on s390x, tan assembly implementation is not handling huge arguments at all. This change is to check for large arguments and revert back to native go implantation from assembly code in case of huge arguments.

The changes are implemented in assembly code to get better performance over native go implementation.

Benchmark details of tan function with table driven inputs are updated as part of the issue link.

Fixes #37854

Change-Id: I4e5321e65c27b7ce8c497fc9d3991ca8604753d2
Reviewed-on: https://go-review.googlesource.com/c/go/+/470595
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
This commit is contained in:
root 2023-02-23 06:44:23 +00:00 committed by Gopher Robot
parent 93ec88160e
commit a8a6f90a23

View File

@ -49,10 +49,9 @@ TEXT ·tanAsm(SB), NOSPLIT, $0-16
FMOVD F0, F2
L2:
MOVD $·tanxlim<>+0(SB), R1
WORD $0xED201000 //cdb %f2,0(%r1)
BYTE $0x00
BYTE $0x19
BGE L11
FMOVD 0(R1), F1
FCMPU F2, F1
BGT L9
BVS L11
MOVD $·tanxadd<>+0(SB), R1
FMOVD 88(R5), F6
@ -105,6 +104,8 @@ L11:
L10:
WORD $0xB3130020 //lcdbr %f2,%f0
BR L2
L9:
BR ·tan(SB)
atanIsZero:
FMOVD F0, ret+8(FP)
RET