]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: optimize bitset tests
authorLE Manh Cuong <cuong.manhle.vn@gmail.com>
Wed, 8 May 2019 10:02:23 +0000 (17:02 +0700)
committerDaniel Martí <mvdan@mvdan.cc>
Tue, 27 Aug 2019 18:01:16 +0000 (18:01 +0000)
commitc5f142fa9fb6e00b0877ba4b6e9ab77d22ac50cd
tree3f958cb07e741c3abe5597ef81c15b6f4e2c1491
parentae68a912725e5a3a0482bc5945687663f2ddafe3
cmd/compile: optimize bitset tests

The assembly output for x & c == c, where c is power of 2:

MOVQ "".set+8(SP), AX
ANDQ $8, AX
CMPQ AX, $8
SETEQ "".~r2+24(SP)

With optimization using bitset:

MOVQ "".set+8(SP), AX
BTL $3, AX
SETCS "".~r2+24(SP)

output less than 1 instruction.

However, there is no speed improvement:

name         old time/op  new time/op  delta
AllBitSet-8  0.35ns ± 0%  0.35ns ± 0%   ~     (all equal)

Fixes #31904

Change-Id: I5dca4e410bf45716ed2145e3473979ec997e35d4
Reviewed-on: https://go-review.googlesource.com/c/go/+/175957
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/gen/generic.rules
src/cmd/compile/internal/ssa/rewritegeneric.go
test/codegen/bits.go