diff options
author | Chad Rosier <mrosier.qdt@qualcommdatacenter.com> | 2018-02-16 09:22:32 -0500 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2018-02-16 15:37:57 +0000 |
commit | 07f0f0956355266dafc36aadb66928e7450210ea (patch) | |
tree | 8cde4394a0e34f8ae6b4cfdc6485661d1e5aea7e /src/cmd/compile/internal/ssa/gen/ARM64Ops.go | |
parent | ba99433d333a2babbbfa63ead19d43282a3243f4 (diff) | |
download | go-07f0f0956355266dafc36aadb66928e7450210ea.tar.gz go-07f0f0956355266dafc36aadb66928e7450210ea.zip |
cmd/compile: make math.Ceil/Floor/Round/Trunc intrinsics on arm64
name old time/op new time/op delta
Ceil 550ns ± 0% 486ns ± 7% -11.64% (p=0.000 n=13+18)
Floor 495ns ±19% 512ns ±12% ~ (p=0.164 n=20+20)
Round 550ns ± 0% 487ns ± 8% -11.49% (p=0.000 n=12+19)
Trunc 563ns ± 7% 488ns ±13% -13.44% (p=0.000 n=15+2)
Change-Id: I53f234b160b3c026a277506e2cf977d150379464
Reviewed-on: https://go-review.googlesource.com/88295
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/gen/ARM64Ops.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/gen/ARM64Ops.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go index f053109fb3..bed0fb3ccf 100644 --- a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go +++ b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go @@ -323,6 +323,12 @@ func init() { {name: "FCVTSD", argLength: 1, reg: fp11, asm: "FCVTSD"}, // float32 -> float64 {name: "FCVTDS", argLength: 1, reg: fp11, asm: "FCVTDS"}, // float64 -> float32 + // floating-point round to integral + {name: "FRINTAD", argLength: 1, reg: fp11, asm: "FRINTAD"}, + {name: "FRINTMD", argLength: 1, reg: fp11, asm: "FRINTMD"}, + {name: "FRINTPD", argLength: 1, reg: fp11, asm: "FRINTPD"}, + {name: "FRINTZD", argLength: 1, reg: fp11, asm: "FRINTZD"}, + // conditional instructions {name: "CSELULT", argLength: 3, reg: gp2flags1, asm: "CSEL"}, // returns arg0 if flags indicates unsigned LT, arg1 otherwise, arg2=flags {name: "CSELULT0", argLength: 2, reg: gp1flags1, asm: "CSEL"}, // returns arg0 if flags indicates unsigned LT, 0 otherwise, arg1=flags |