AMD64 Architecture Programming Guide Volume 1: Application Programming p. 226 talks about SSE instructions:
The processor does not check the data type of the operands of the instructions until instructions are executed. This only checks them at the execution point. For example, if a processor performs arithmetic instructions that accepts operands with double precision, but is supplied with operands with single precision MOVx, the processor first converts the operands with one precision to double precision before performing the arithmetic operation, and the result is correct. However, the required conversion can lead to poor performance.
I do not understand this; I would think that the ymm registers simply contain 256 bits, which each command interprets in accordance with the expected operands, it is up to you to make sure that the correct types exist, and in the described scenario the processor will run at full speed and silently give the wrong answer .
What am I missing?
rwallace
source share