Skip to content

Commit 066c47c

Browse files
committed
cmd/compile: use cheaper implementation of oneBit
Updates #38547 file before after Δ % compile 19678112 19669808 -8304 -0.042% total 113143160 113134856 -8304 -0.007% Change-Id: I5f8afe17401dbdb7c7b3d66d95fe40821c499a92 Reviewed-on: https://go-review.googlesource.com/c/go/+/229127 Run-TryBot: Josh Bleecher Snyder <[email protected]> Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 50b1131 commit 066c47c

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/cmd/compile/internal/ssa/rewrite.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -395,11 +395,11 @@ func ntz32(x int32) int { return bits.TrailingZeros32(uint32(x)) }
395395
func ntz16(x int16) int { return bits.TrailingZeros16(uint16(x)) }
396396
func ntz8(x int8) int { return bits.TrailingZeros8(uint8(x)) }
397397

398-
func oneBit(x int64) bool { return bits.OnesCount64(uint64(x)) == 1 }
399-
func oneBit8(x int8) bool { return bits.OnesCount8(uint8(x)) == 1 }
400-
func oneBit16(x int16) bool { return bits.OnesCount16(uint16(x)) == 1 }
401-
func oneBit32(x int32) bool { return bits.OnesCount32(uint32(x)) == 1 }
402-
func oneBit64(x int64) bool { return bits.OnesCount64(uint64(x)) == 1 }
398+
func oneBit(x int64) bool { return x&(x-1) == 0 }
399+
func oneBit8(x int8) bool { return x&(x-1) == 0 }
400+
func oneBit16(x int16) bool { return x&(x-1) == 0 }
401+
func oneBit32(x int32) bool { return x&(x-1) == 0 }
402+
func oneBit64(x int64) bool { return x&(x-1) == 0 }
403403

404404
// nlo returns the number of leading ones.
405405
func nlo(x int64) int64 {

0 commit comments

Comments
 (0)