aboutsummaryrefslogtreecommitdiff
path: root/test/codegen/mathbits.go
diff options
context:
space:
mode:
authorAlberto Donizetti <alb.donizetti@gmail.com>2018-10-12 20:56:12 +0200
committerAlberto Donizetti <alb.donizetti@gmail.com>2018-10-15 16:53:03 +0000
commit7c96d87eda45c93bf7218b79bc8ba85a3a21b066 (patch)
tree6f78f7f5801eb9e7124e0bf49538ea012160c4bb /test/codegen/mathbits.go
parenta55f3ee46dda090131afba3018856e19bd0f426d (diff)
downloadgo-7c96d87eda45c93bf7218b79bc8ba85a3a21b066.tar.xz
test/codegen: test ppc64 TrailingZeros, OnesCount codegen
This change adds codegen tests for the intrinsification on ppc64 of the OnesCount{64,32,16,8}, and TrailingZeros{64,32,16,8} math/bits functions. Change-Id: Id3364921fbd18316850e15c8c71330c906187fdb Reviewed-on: https://go-review.googlesource.com/c/141897 Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Diffstat (limited to 'test/codegen/mathbits.go')
-rw-r--r--test/codegen/mathbits.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/codegen/mathbits.go b/test/codegen/mathbits.go
index 9bb2254155..89a77d96f9 100644
--- a/test/codegen/mathbits.go
+++ b/test/codegen/mathbits.go
@@ -104,6 +104,7 @@ func OnesCount(n uint) int {
// amd64:"POPCNTQ",".*support_popcnt"
// arm64:"VCNT","VUADDLV"
// s390x:"POPCNT"
+ // ppc64:"POPCNTD"
return bits.OnesCount(n)
}
@@ -111,6 +112,7 @@ func OnesCount64(n uint64) int {
// amd64:"POPCNTQ",".*support_popcnt"
// arm64:"VCNT","VUADDLV"
// s390x:"POPCNT"
+ // ppc64:"POPCNTD"
return bits.OnesCount64(n)
}
@@ -118,6 +120,7 @@ func OnesCount32(n uint32) int {
// amd64:"POPCNTL",".*support_popcnt"
// arm64:"VCNT","VUADDLV"
// s390x:"POPCNT"
+ // ppc64:"POPCNTW"
return bits.OnesCount32(n)
}
@@ -125,11 +128,13 @@ func OnesCount16(n uint16) int {
// amd64:"POPCNTL",".*support_popcnt"
// arm64:"VCNT","VUADDLV"
// s390x:"POPCNT"
+ // ppc64:"POPCNTW"
return bits.OnesCount16(n)
}
func OnesCount8(n uint8) int {
// s390x:"POPCNT"
+ // ppc64:"POPCNTB"
return bits.OnesCount8(n)
}
@@ -224,24 +229,28 @@ func RotateLeftVariable32(n uint32, m int) uint32 {
func TrailingZeros(n uint) int {
// amd64:"BSFQ","MOVL\t\\$64","CMOVQEQ"
// s390x:"FLOGR"
+ // ppc64:"ANDN","POPCNTD"
return bits.TrailingZeros(n)
}
func TrailingZeros64(n uint64) int {
// amd64:"BSFQ","MOVL\t\\$64","CMOVQEQ"
// s390x:"FLOGR"
+ // ppc64:"ANDN","POPCNTD"
return bits.TrailingZeros64(n)
}
func TrailingZeros32(n uint32) int {
// amd64:"BTSQ\\t\\$32","BSFQ"
// s390x:"FLOGR","MOVWZ"
+ // ppc64:"ANDN","POPCNTW"
return bits.TrailingZeros32(n)
}
func TrailingZeros16(n uint16) int {
// amd64:"BSFL","BTSL\\t\\$16"
// s390x:"FLOGR","OR\t\\$65536"
+ // ppc64:"POPCNTD","OR\\t\\$65536"
return bits.TrailingZeros16(n)
}