]> Cypherpunks repositories - gostls13.git/commit
simd/archsimd: use V(P)MOVMSK for mask ToBits if possible
authorCherry Mui <cherryyz@google.com>
Mon, 5 Jan 2026 17:56:08 +0000 (12:56 -0500)
committerCherry Mui <cherryyz@google.com>
Mon, 5 Jan 2026 20:22:51 +0000 (12:22 -0800)
commit9b2e3b9a02bd8872bdbf5c6086674fa6b4bc8ef9
tree51a43dfc235315fbbc88226f0e52ab77cb628e46
parentf8ee0f84753b22254d217bf28ce8ecca7db7025c
simd/archsimd: use V(P)MOVMSK for mask ToBits if possible

VPMOVMSKB, VMOVMSKPS, and VMOVMSKPD moves AVX1/2-style masks to
integer registers, similar to VPMOV[BWDQ]2M (which moves to mask
registers). The former is available on AVX1/2, the latter requires
AVX512. So use the former if it is supported, i.e. for 128- and
256-bit vectors with 8-, 32-, and 64-bit elements (16-bit elements
always require AVX512).

Change-Id: I972195116617ed2faaf95cee5cd6b250e671496c
Reviewed-on: https://go-review.googlesource.com/c/go/+/734060
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
src/cmd/compile/internal/amd64/ssa.go
src/cmd/compile/internal/ssa/_gen/AMD64.rules
src/cmd/compile/internal/ssa/_gen/AMD64Ops.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
src/simd/archsimd/internal/simd_test/simd_test.go
src/simd/archsimd/types_amd64.go