mirror of
https://github.com/golang/go
synced 2024-10-01 01:38:33 -06:00
3d33c30540
App Engine is amd64 but it doesn't support uploading assembly files. Use the explicit build tag so that it selects the generic implementation on App Engine. This is required to deploy golang.org. Change-Id: I7374c91961c53d59f6fdcc9ac98b8a9cec755b2c Reviewed-on: https://go-review.googlesource.com/15246 Reviewed-by: Andrew Gerrand <adg@golang.org>
33 lines
910 B
Go
33 lines
910 B
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build !amd64 appengine
|
|
|
|
package intsets
|
|
|
|
import "runtime"
|
|
|
|
// We compared three algorithms---Hacker's Delight, table lookup,
|
|
// and AMD64's SSE4.1 hardware POPCNT---on a 2.67GHz Xeon X5550.
|
|
//
|
|
// % GOARCH=amd64 go test -run=NONE -bench=Popcount
|
|
// POPCNT 5.12 ns/op
|
|
// Table 8.53 ns/op
|
|
// HackersDelight 9.96 ns/op
|
|
//
|
|
// % GOARCH=386 go test -run=NONE -bench=Popcount
|
|
// Table 10.4 ns/op
|
|
// HackersDelight 5.23 ns/op
|
|
//
|
|
// (AMD64's ABM1 hardware supports ntz and nlz too,
|
|
// but they aren't critical.)
|
|
|
|
// popcount returns the population count (number of set bits) of x.
|
|
func popcount(x word) int {
|
|
if runtime.GOARCH == "386" {
|
|
return popcountHD(uint32(x))
|
|
}
|
|
return popcountTable(x)
|
|
}
|