The documentation for vzeroall
appears inconsistent. The prose says:
The instruction zeros contents of all XMM or YMM registers.
The pseudocode below that, however, indicates that in 64-bit mode only registers ymm0
through ymm15
are affected:
IF (64-bit mode)
limit ←15
ELSE
limit ← 7
FOR i in 0 .. limit:
simd_reg_file[i][MAXVL-1:0] ← 0
On AVX-512 supporting machines clearing up to ymm15
is not the same as clearing "all" because ymm16
through ymm31
exist.
Is the prose or pseudocode correct?
AVX uses sixteen YMM registers to perform a single instruction on multiple pieces of data (see SIMD). Each YMM register can hold and do simultaneous operations (math) on: eight 32-bit single-precision floating point numbers or. four 64-bit double-precision floating point numbers.
The AVX-512 instruction set increases the size of a CPU's register to enhance its performance. This boost in performance enables CPUs to crunch numbers faster, allowing users to run video/audio compression algorithms at faster speeds.
It seems like it was a description issue, if you will look at the latest SDM you will see that description was changed lately and now it says that VZEROALL does not changing YMM16...YMM31.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With