]> git.feebdaed.xyz Git - 0xmirror/go.git/commitdiff
simd/archsimd: define ToMask only on integer vectors
authorCherry Mui <cherryyz@google.com>
Wed, 10 Dec 2025 17:05:45 +0000 (12:05 -0500)
committerGopher Robot <gobot@golang.org>
Thu, 11 Dec 2025 16:31:43 +0000 (08:31 -0800)
The ToMask method is for converting an AVX2-style mask
represented in a vector to the Mask type. The AVX2-style mask is
a (signed) integer, so define ToMask only on integer vectors.

Cherry-pick CL 729020 from the dev.simd branch, for Go 1.26.

Change-Id: I0c541eb28e945bfaebf2a2feb940bdd438fb6e99
Reviewed-on: https://go-review.googlesource.com/c/go/+/729222
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: David Chase <drchase@google.com>

src/simd/archsimd/_gen/tmplgen/main.go
src/simd/archsimd/other_gen_amd64.go

index 71b5a7a8c79d99a2f52f21c7452183ee8e04c048..03726185cf24244d58148afd5456a2ecd46bb6ea 100644 (file)
@@ -796,7 +796,7 @@ func Broadcast{{.VType}}(x {{.Etype}}) {{.VType}} {
 }
 `)
 
-var maskCvtTemplate = templateOf("Mask conversions", `
+var maskCvtTemplate = shapedTemplateOf(intShapes, "Mask conversions", `
 // ToMask converts from {{.Base}}{{.WxC}} to Mask{{.WxC}}, mask element is set to true when the corresponding vector element is non-zero.
 func (from {{.Base}}{{.WxC}}) ToMask() (to Mask{{.WxC}}) {
        return from.NotEqual({{.Base}}{{.WxC}}{})
index a9f2b1b977ce0fcb4eb10a7e04c9edea633cbe4a..4b7c4644b2a0fcf4fcc100386531df7e9a731ba4 100644 (file)
@@ -294,36 +294,6 @@ func (from Int64x2) ToMask() (to Mask64x2) {
        return from.NotEqual(Int64x2{})
 }
 
-// ToMask converts from Uint8x16 to Mask8x16, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint8x16) ToMask() (to Mask8x16) {
-       return from.NotEqual(Uint8x16{})
-}
-
-// ToMask converts from Uint16x8 to Mask16x8, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint16x8) ToMask() (to Mask16x8) {
-       return from.NotEqual(Uint16x8{})
-}
-
-// ToMask converts from Uint32x4 to Mask32x4, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint32x4) ToMask() (to Mask32x4) {
-       return from.NotEqual(Uint32x4{})
-}
-
-// ToMask converts from Uint64x2 to Mask64x2, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint64x2) ToMask() (to Mask64x2) {
-       return from.NotEqual(Uint64x2{})
-}
-
-// ToMask converts from Float32x4 to Mask32x4, mask element is set to true when the corresponding vector element is non-zero.
-func (from Float32x4) ToMask() (to Mask32x4) {
-       return from.NotEqual(Float32x4{})
-}
-
-// ToMask converts from Float64x2 to Mask64x2, mask element is set to true when the corresponding vector element is non-zero.
-func (from Float64x2) ToMask() (to Mask64x2) {
-       return from.NotEqual(Float64x2{})
-}
-
 // ToMask converts from Int8x32 to Mask8x32, mask element is set to true when the corresponding vector element is non-zero.
 func (from Int8x32) ToMask() (to Mask8x32) {
        return from.NotEqual(Int8x32{})
@@ -344,36 +314,6 @@ func (from Int64x4) ToMask() (to Mask64x4) {
        return from.NotEqual(Int64x4{})
 }
 
-// ToMask converts from Uint8x32 to Mask8x32, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint8x32) ToMask() (to Mask8x32) {
-       return from.NotEqual(Uint8x32{})
-}
-
-// ToMask converts from Uint16x16 to Mask16x16, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint16x16) ToMask() (to Mask16x16) {
-       return from.NotEqual(Uint16x16{})
-}
-
-// ToMask converts from Uint32x8 to Mask32x8, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint32x8) ToMask() (to Mask32x8) {
-       return from.NotEqual(Uint32x8{})
-}
-
-// ToMask converts from Uint64x4 to Mask64x4, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint64x4) ToMask() (to Mask64x4) {
-       return from.NotEqual(Uint64x4{})
-}
-
-// ToMask converts from Float32x8 to Mask32x8, mask element is set to true when the corresponding vector element is non-zero.
-func (from Float32x8) ToMask() (to Mask32x8) {
-       return from.NotEqual(Float32x8{})
-}
-
-// ToMask converts from Float64x4 to Mask64x4, mask element is set to true when the corresponding vector element is non-zero.
-func (from Float64x4) ToMask() (to Mask64x4) {
-       return from.NotEqual(Float64x4{})
-}
-
 // ToMask converts from Int8x64 to Mask8x64, mask element is set to true when the corresponding vector element is non-zero.
 func (from Int8x64) ToMask() (to Mask8x64) {
        return from.NotEqual(Int8x64{})
@@ -394,36 +334,6 @@ func (from Int64x8) ToMask() (to Mask64x8) {
        return from.NotEqual(Int64x8{})
 }
 
-// ToMask converts from Uint8x64 to Mask8x64, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint8x64) ToMask() (to Mask8x64) {
-       return from.NotEqual(Uint8x64{})
-}
-
-// ToMask converts from Uint16x32 to Mask16x32, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint16x32) ToMask() (to Mask16x32) {
-       return from.NotEqual(Uint16x32{})
-}
-
-// ToMask converts from Uint32x16 to Mask32x16, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint32x16) ToMask() (to Mask32x16) {
-       return from.NotEqual(Uint32x16{})
-}
-
-// ToMask converts from Uint64x8 to Mask64x8, mask element is set to true when the corresponding vector element is non-zero.
-func (from Uint64x8) ToMask() (to Mask64x8) {
-       return from.NotEqual(Uint64x8{})
-}
-
-// ToMask converts from Float32x16 to Mask32x16, mask element is set to true when the corresponding vector element is non-zero.
-func (from Float32x16) ToMask() (to Mask32x16) {
-       return from.NotEqual(Float32x16{})
-}
-
-// ToMask converts from Float64x8 to Mask64x8, mask element is set to true when the corresponding vector element is non-zero.
-func (from Float64x8) ToMask() (to Mask64x8) {
-       return from.NotEqual(Float64x8{})
-}
-
 // Not returns the bitwise complement of x
 //
 // Emulated, CPU Feature AVX