]> Cypherpunks repositories - gostls13.git/commitdiff
math: support to handle huge arguments in tan function on s390x
authorroot <vishwanatha.hd@ibm.com>
Thu, 23 Feb 2023 06:44:23 +0000 (06:44 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 27 Jul 2023 23:30:00 +0000 (23:30 +0000)
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>

src/math/tan_s390x.s

index 82267608b97ea6c17b1f7f89a218c1c87c0d15b5..6a4c449b0dfcb60c45f59fa8d0712c9d53c259ec 100644 (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