]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/gc: use hardware instruction for math.Sqrt (amd64/arm)
authorRuss Cox <rsc@golang.org>
Wed, 1 Apr 2015 20:02:34 +0000 (16:02 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 3 Apr 2015 16:13:36 +0000 (16:13 +0000)
commit92dba0d2780331d68e56bdb1a5e0af13b714be73
tree85569ca34e7c2a65861156739b038cf74c4c5072
parent90c0fefe51b59f854f4eb7a8bc29348ae478b673
cmd/internal/gc: use hardware instruction for math.Sqrt (amd64/arm)

I first prototyped this change in Sept 2011, and I discarded it
because it made no difference in the obvious benchmark loop.
It still makes no difference in the obvious benchmark loop,
but in a less obvious one, doing some extra computation
around the calls to Sqrt, not making the call does have a
significant effect.

benchmark                 old ns/op     new ns/op     delta
BenchmarkSqrt             4.56          4.57          +0.22%
BenchmarkSqrtIndirect     4.56          4.56          +0.00%
BenchmarkSqrtGo           69.4          69.4          +0.00%
BenchmarkSqrtPrime        4417          3647          -17.43%

This is a warmup for using hardware expansions for some
calls to 1-line assembly routines in the runtime (for example getg).

Change-Id: Ie66be23f8c09d0f7dc4ddd7ca8a93cfce28f55a4
Reviewed-on: https://go-review.googlesource.com/8356
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/5g/gsubr.go
src/cmd/5g/peep.go
src/cmd/5g/prog.go
src/cmd/6g/gsubr.go
src/cmd/6g/prog.go
src/cmd/internal/gc/cgen.go
src/cmd/internal/gc/gen.go
src/cmd/internal/gc/syntax.go
src/cmd/internal/gc/walk.go
src/math/all_test.go
src/math/sqrt.go