]> Cypherpunks repositories - gostls13.git/commit
math: optimize Exp and Exp2 on arm64
authorerifan01 <eric.fang@arm.com>
Tue, 19 Dec 2017 07:49:10 +0000 (07:49 +0000)
committerCherry Zhang <cherryyz@google.com>
Tue, 27 Mar 2018 19:55:02 +0000 (19:55 +0000)
commit711a373cc304eab50ee29ace78ec48f6c619a0cc
tree45b94d7f49676edfcc4e5255731d98e6c527c6e4
parent0a5be12f5c1288a090329d9f540d6a0aad90b6e6
math: optimize Exp and Exp2 on arm64

This CL implements Exp and Exp2 with arm64 assembly. By inlining Ldexp and
using fused instructions(fmadd, fmsub, fnmsub), this CL helps to improve
the performance of functions Exp, Exp2, Sinh, Cosh and Tanh.

Benchmarks:
name                   old time/op  new time/op  delta
Cosh-8                  138ns ± 0%    96ns ± 0%  -30.72%  (p=0.008 n=5+5)
Exp-8                   105ns ± 0%    58ns ± 0%  -45.24%  (p=0.000 n=5+4)
Exp2-8                  100ns ± 0%    57ns ± 0%  -43.21%  (p=0.008 n=5+5)
Sinh-8                  139ns ± 0%   102ns ± 0%  -26.62%  (p=0.008 n=5+5)
Tanh-8                  134ns ± 0%   100ns ± 0%  -25.67%  (p=0.008 n=5+5)

Change-Id: I7483a3333062a1d3525cedf3de56db78d79031c6
Reviewed-on: https://go-review.googlesource.com/86615
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/math/all_test.go
src/math/exp_arm64.s [new file with mode: 0644]
src/math/stubs_arm64.s