From: Ilya Tocar Date: Tue, 28 Mar 2017 19:09:28 +0000 (-0500) Subject: math: speed up Log on amd64 X-Git-Tag: go1.9beta1~923 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4f579cc65bfedca93ad00f9c5eb138c4a785a4ad;p=gostls13.git math: speed up Log on amd64 After https://golang.org/cl/31490 we break false output dependency for CVTS.. in compiler generated code. I've looked through asm code, which uses CVTS.. and added XOR to the only case where it affected performance. Log-6 21.6ns ± 0% 19.9ns ± 0% -7.87% (p=0.000 n=10+10) Change-Id: I25d9b405e3041a3839b40f9f9a52e708034bb347 Reviewed-on: https://go-review.googlesource.com/38771 Run-TryBot: Ilya Tocar TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- diff --git a/src/math/log_amd64.s b/src/math/log_amd64.s index bd2d06323c..3d7638979f 100644 --- a/src/math/log_amd64.s +++ b/src/math/log_amd64.s @@ -41,6 +41,7 @@ TEXT ·Log(SB),NOSPLIT,$0 SHRQ $52, BX ANDL $0x7FF, BX SUBL $0x3FE, BX + XORPS X1, X1 // break dependency for CVTSL2SD CVTSL2SD BX, X1 // x1= k, x2= f1 // if f1 < math.Sqrt2/2 { k -= 1; f1 *= 2 } MOVSD $HSqrt2, X0 // x0= 0.7071, x1= k, x2= f1