aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorJakub Ciolek <jakub@ciolek.dev>2025-01-07 07:00:24 +0100
committerGopher Robot <gobot@golang.org>2025-02-03 08:42:01 -0800
commite57769d5ad251a26d7676cd7a63e5332b26a35f0 (patch)
tree6b2076ab7d1ea49bbb6a1e10b6580734064151e4 /test/codegen
parentf7dbbf251980763609a65efe15ef9f8ed0cc5a95 (diff)
downloadgo-e57769d5ad251a26d7676cd7a63e5332b26a35f0.tar.xz
cmd/compile: on AMD64, prefer XOR/AND for (x & 1) == 0 check
It's shorter to encode. Additionally, XOR and AND generally have higher throughput than BT/SET*. compilecmp: runtime runtime.(*sweepClass).split 58 -> 56 (-3.45%) runtime.sweepClass.split 14 -> 11 (-21.43%) runtime [cmd/compile] runtime.(*sweepClass).split 58 -> 56 (-3.45%) runtime.sweepClass.split 14 -> 11 (-21.43%) strconv strconv.ryuFtoaShortest changed strconv [cmd/compile] strconv.ryuFtoaShortest changed math/big math/big.(*Int).MulRange 255 -> 252 (-1.18%) testing/quick testing/quick.sizedValue changed internal/fuzz internal/fuzz.(*pcgRand).bool 69 -> 70 (+1.45%) cmd/internal/obj/x86 cmd/internal/obj/x86.(*AsmBuf).asmevex changed math/big [cmd/compile] math/big.(*Int).MulRange 255 -> 252 (-1.18%) cmd/internal/obj/x86 [cmd/compile] cmd/internal/obj/x86.(*AsmBuf).asmevex changed net/http net/http.(*http2stream).isPushed 11 -> 10 (-9.09%) cmd/vendor/github.com/google/pprof/internal/binutils cmd/vendor/github.com/google/pprof/internal/binutils.(*file).computeBase changed Change-Id: I9cb2987eb263c85ee4e93d6f8455c91a55273173 Reviewed-on: https://go-review.googlesource.com/c/go/+/640975 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com> Auto-Submit: Keith Randall <khr@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/bool.go2
1 files changed, 2 insertions, 0 deletions
diff --git a/test/codegen/bool.go b/test/codegen/bool.go
index 164ca1b224..2024759a5c 100644
--- a/test/codegen/bool.go
+++ b/test/codegen/bool.go
@@ -47,6 +47,7 @@ func convertNeqBool32(x uint32) bool {
func convertEqBool32(x uint32) bool {
// ppc64x:"RLDICL",-"CMPW","XOR",-"ISEL"
+ // amd64:"ANDL","XORL",-"BTL",-"SETCC"
return x&1 == 0
}
@@ -57,6 +58,7 @@ func convertNeqBool64(x uint64) bool {
func convertEqBool64(x uint64) bool {
// ppc64x:"RLDICL","XOR",-"CMP",-"ISEL"
+ // amd64:"ANDL","XORL",-"BTL",-"SETCC"
return x&1 == 0
}