From: Cherry Mui Date: Wed, 10 Dec 2025 17:05:45 +0000 (-0500) Subject: simd/archsimd: define ToMask only on integer vectors X-Git-Url: https://git.feebdaed.xyz/?a=commitdiff_plain;h=f110ba540c35c5ac835921727332fb6f02adf594;p=0xmirror%2Fgo.git simd/archsimd: define ToMask only on integer vectors 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 Reviewed-by: David Chase Auto-Submit: David Chase --- diff --git a/src/simd/archsimd/_gen/tmplgen/main.go b/src/simd/archsimd/_gen/tmplgen/main.go index 71b5a7a8c7..03726185cf 100644 --- a/src/simd/archsimd/_gen/tmplgen/main.go +++ b/src/simd/archsimd/_gen/tmplgen/main.go @@ -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}}{}) diff --git a/src/simd/archsimd/other_gen_amd64.go b/src/simd/archsimd/other_gen_amd64.go index a9f2b1b977..4b7c4644b2 100644 --- a/src/simd/archsimd/other_gen_amd64.go +++ b/src/simd/archsimd/other_gen_amd64.go @@ -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