• fanzha02's avatar
    cmd/compile: optimize math.Float64(32)bits and math.Float64(32)frombits on arm64 · a19a83c8
    fanzha02 authored
    Use float <-> int register moves without conversion instead of stores
    and loads to move float <-> int values.
    
    Math package benchmark results.
    name                 old time/op  new time/op  delta
    Acosh                 153ns ± 0%   147ns ± 0%   -3.92%  (p=0.000 n=10+10)
    Asinh                 183ns ± 0%   177ns ± 0%   -3.28%  (p=0.000 n=10+10)
    Atanh                 157ns ± 0%   155ns ± 0%   -1.27%  (p=0.000 n=10+10)
    Atan2                 118ns ± 0%   117ns ± 1%   -0.59%  (p=0.003 n=10+10)
    Cbrt                  119ns ± 0%   114ns ± 0%   -4.20%  (p=0.000 n=10+10)
    Copysign             7.51ns ± 0%  6.51ns ± 0%  -13.32%  (p=0.000 n=9+10)
    Cos                  73.1ns ± 0%  70.6ns ± 0%   -3.42%  (p=0.000 n=10+10)
    Cosh                  119ns ± 0%   121ns ± 0%   +1.68%  (p=0.000 n=10+9)
    ExpGo                 154ns ± 0%   149ns ± 0%   -3.05%  (p=0.000 n=9+10)
    Expm1                 101ns ± 0%    99ns ± 0%   -1.88%  (p=0.000 n=10+10)
    Exp2Go                150ns ± 0%   146ns ± 0%   -2.67%  (p=0.000 n=10+10)
    Abs                  7.01ns ± 0%  6.01ns ± 0%  -14.27%  (p=0.000 n=10+9)
    Mod                   234ns ± 0%   212ns ± 0%   -9.40%  (p=0.000 n=9+10)
    Frexp                34.5ns ± 0%  30.0ns ± 0%  -13.04%  (p=0.000 n=10+10)
    Gamma                 112ns ± 0%   111ns ± 0%   -0.89%  (p=0.000 n=10+10)
    Hypot                73.6ns ± 0%  68.6ns ± 0%   -6.79%  (p=0.000 n=10+10)
    HypotGo              77.1ns ± 0%  72.1ns ± 0%   -6.49%  (p=0.000 n=10+10)
    Ilogb                31.0ns ± 0%  28.0ns ± 0%   -9.68%  (p=0.000 n=10+10)
    J0                    437ns ± 0%   434ns ± 0%   -0.62%  (p=0.000 n=10+10)
    J1                    433ns ± 0%   431ns ± 0%   -0.46%  (p=0.000 n=10+10)
    Jn                    927ns ± 0%   922ns ± 0%   -0.54%  (p=0.000 n=10+10)
    Ldexp                41.5ns ± 0%  37.0ns ± 0%  -10.84%  (p=0.000 n=9+10)
    Log                   124ns ± 0%   118ns ± 0%   -4.84%  (p=0.000 n=10+9)
    Logb                 34.0ns ± 0%  32.0ns ± 0%   -5.88%  (p=0.000 n=10+10)
    Log1p                 110ns ± 0%   108ns ± 0%   -1.82%  (p=0.000 n=10+10)
    Log10                 136ns ± 0%   132ns ± 0%   -2.94%  (p=0.000 n=10+10)
    Log2                 51.6ns ± 0%  47.1ns ± 0%   -8.72%  (p=0.000 n=10+10)
    Nextafter32          33.0ns ± 0%  30.5ns ± 0%   -7.58%  (p=0.000 n=10+10)
    Nextafter64          29.0ns ± 0%  26.5ns ± 0%   -8.62%  (p=0.000 n=10+10)
    PowInt                169ns ± 0%   160ns ± 0%   -5.33%  (p=0.000 n=10+10)
    PowFrac               375ns ± 0%   361ns ± 0%   -3.73%  (p=0.000 n=10+10)
    RoundToEven          14.0ns ± 0%  12.5ns ± 0%  -10.71%  (p=0.000 n=10+10)
    Remainder             206ns ± 0%   192ns ± 0%   -6.80%  (p=0.000 n=10+9)
    Signbit              6.01ns ± 0%  5.51ns ± 0%   -8.32%  (p=0.000 n=10+9)
    Sin                  70.1ns ± 0%  69.6ns ± 0%   -0.71%  (p=0.000 n=10+10)
    Sincos               99.1ns ± 0%  99.6ns ± 0%   +0.50%  (p=0.000 n=9+10)
    SqrtGoLatency         178ns ± 0%   146ns ± 0%  -17.70%  (p=0.000 n=8+10)
    SqrtPrime            9.19µs ± 0%  9.20µs ± 0%   +0.01%  (p=0.000 n=9+9)
    Tanh                  125ns ± 1%   127ns ± 0%   +1.36%  (p=0.000 n=10+10)
    Y0                    428ns ± 0%   426ns ± 0%   -0.47%  (p=0.000 n=10+10)
    Y1                    431ns ± 0%   429ns ± 0%   -0.46%  (p=0.000 n=10+9)
    Yn                    906ns ± 0%   901ns ± 0%   -0.55%  (p=0.000 n=10+10)
    Float64bits          4.50ns ± 0%  3.50ns ± 0%  -22.22%  (p=0.000 n=10+10)
    Float64frombits      4.00ns ± 0%  3.50ns ± 0%  -12.50%  (p=0.000 n=10+9)
    Float32bits          4.50ns ± 0%  3.50ns ± 0%  -22.22%  (p=0.002 n=8+10)
    Float32frombits      4.00ns ± 0%  3.50ns ± 0%  -12.50%  (p=0.000 n=10+10)
    
    Change-Id: Iba829e15d5624962fe0c699139ea783efeefabc2
    Reviewed-on: https://go-review.googlesource.com/129715Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    a19a83c8
Name
Last commit
Last update
..
README Loading commit data...
arithmetic.go Loading commit data...
bitfield.go Loading commit data...
bits.go Loading commit data...
comparisons.go Loading commit data...
condmove.go Loading commit data...
copy.go Loading commit data...
floats.go Loading commit data...
issue22703.go Loading commit data...
issue25378.go Loading commit data...
mapaccess.go Loading commit data...
maps.go Loading commit data...
math.go Loading commit data...
mathbits.go Loading commit data...
memcombine.go Loading commit data...
memops.go Loading commit data...
noextend.go Loading commit data...
rotate.go Loading commit data...
shift.go Loading commit data...
slices.go Loading commit data...
stack.go Loading commit data...
strings.go Loading commit data...
structs.go Loading commit data...