mirror of https://github.com/golang/go.git
This CL make math.sqrt an intrinsic function, math.Sqrt is not affected since compiler can inline it. With this change, we can remove all assembly code for math.Sqrt that aims to speed up indirect call. The go compiler can generate same or faster code (with regabi) for indirect call. Benchmark on amd64: name old time/op new time/op delta SqrtIndirect 2.60ns ± 3% 1.03ns ± 4% -60.24% (p=0.000 n=10+10) SqrtLatency 3.40ns ± 1% 3.32ns ± 1% -2.26% (p=0.000 n=10+8) SqrtIndirectLatency 6.09ns ± 0% 3.31ns ± 0% -45.67% (p=0.000 n=10+10) SqrtGoLatency 36.1ns ± 6% 34.6ns ± 1% ~ (p=0.101 n=10+10) SqrtPrime 2.53µs ± 2% 2.55µs ± 6% ~ (p=0.398 n=9+9) Change-Id: If4be0f242c1d9d4feca7d269fc9cd6e6066f163d Reviewed-on: https://go-review.googlesource.com/c/go/+/421074 Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> |
||
|---|---|---|
| .. | ||
| big | ||
| bits | ||
| cmplx | ||
| rand | ||
| abs.go | ||
| acos_s390x.s | ||
| acosh.go | ||
| acosh_s390x.s | ||
| all_test.go | ||
| arith_s390x.go | ||
| arith_s390x_test.go | ||
| asin.go | ||
| asin_s390x.s | ||
| asinh.go | ||
| asinh_s390x.s | ||
| atan.go | ||
| atan2.go | ||
| atan2_s390x.s | ||
| atan_s390x.s | ||
| atanh.go | ||
| atanh_s390x.s | ||
| bits.go | ||
| cbrt.go | ||
| cbrt_s390x.s | ||
| const.go | ||
| const_test.go | ||
| copysign.go | ||
| cosh_s390x.s | ||
| dim.go | ||
| dim_amd64.s | ||
| dim_arm64.s | ||
| dim_asm.go | ||
| dim_noasm.go | ||
| dim_riscv64.s | ||
| dim_s390x.s | ||
| erf.go | ||
| erf_s390x.s | ||
| erfc_s390x.s | ||
| erfinv.go | ||
| example_test.go | ||
| exp.go | ||
| exp2_asm.go | ||
| exp2_noasm.go | ||
| exp_amd64.go | ||
| exp_amd64.s | ||
| exp_arm64.s | ||
| exp_asm.go | ||
| exp_noasm.go | ||
| exp_s390x.s | ||
| expm1.go | ||
| expm1_s390x.s | ||
| export_s390x_test.go | ||
| export_test.go | ||
| floor.go | ||
| floor_386.s | ||
| floor_amd64.s | ||
| floor_arm64.s | ||
| floor_asm.go | ||
| floor_noasm.go | ||
| floor_ppc64x.s | ||
| floor_s390x.s | ||
| floor_wasm.s | ||
| fma.go | ||
| frexp.go | ||
| gamma.go | ||
| huge_test.go | ||
| hypot.go | ||
| hypot_386.s | ||
| hypot_amd64.s | ||
| hypot_asm.go | ||
| hypot_noasm.go | ||
| j0.go | ||
| j1.go | ||
| jn.go | ||
| ldexp.go | ||
| lgamma.go | ||
| log.go | ||
| log1p.go | ||
| log1p_s390x.s | ||
| log10.go | ||
| log10_s390x.s | ||
| log_amd64.s | ||
| log_asm.go | ||
| log_s390x.s | ||
| log_stub.go | ||
| logb.go | ||
| mod.go | ||
| modf.go | ||
| modf_arm64.s | ||
| modf_asm.go | ||
| modf_noasm.go | ||
| modf_ppc64x.s | ||
| nextafter.go | ||
| pow.go | ||
| pow10.go | ||
| pow_s390x.s | ||
| remainder.go | ||
| signbit.go | ||
| sin.go | ||
| sin_s390x.s | ||
| sincos.go | ||
| sinh.go | ||
| sinh_s390x.s | ||
| sqrt.go | ||
| stubs.go | ||
| stubs_s390x.s | ||
| tan.go | ||
| tan_s390x.s | ||
| tanh.go | ||
| tanh_s390x.s | ||
| trig_reduce.go | ||
| unsafe.go | ||