runtime: VZEROUPPER at the end of FilterNilAVX512

VZEROUPPER at the end of FilterNilAVX512 as we're leaving AVX
context. Also explicitly zero Z15, as the high bits are not
guaranteed zero as of CL 728240.

Change-Id: I000a199206d0b8fd4905c8a699e934551bbd3c60
Reviewed-on: https://go-review.googlesource.com/c/go/+/728740
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Cherry Mui 2025-12-09 11:48:41 -05:00
parent 36bca3166e
commit 0d71bd57c9

View File

@ -16,6 +16,7 @@ TEXT ·FilterNilAVX512(SB), NOSPLIT, $0-20
SUBL R10, R12 // R12 = n - scanned
CMPL R12, $8 // Compare (n - scanned) with 8
JLT scalar_loop // If (n - scanned) < 8, jump to the scalar cleanup
VPXOR X15, X15, X15 // Zero the high bits of Z15
vector_loop:
LEAQ (R8)(R10*8), R13 // R13 = buf[scanned:] address
@ -61,4 +62,5 @@ scalar_increment_i:
end:
MOVL R11, ret+16(FP)
VZEROUPPER
RET