VEX prefix

In other cases, the VEX-encoded version is longer or shorter than the legacy code.

In 32-bit mode VEX encoded instructions can only access the first 8 YMM/XMM registers; the encodings for the other registers would be interpreted as the legacy LDS and LES instructions that are not supported in 64-bit mode.

SSE operations without VEX leave the high bits of destination SIMD registers unmodified.

x86 processors use special techniques to optimize this (such as the vzeroupper instruction), but it still comes at a performance penalty.

[1] When a VEX prefix is used, the high bits of the destination register are cleared (zeroed).

In the x86 architecture, instructions with a memory operand almost always use the ModR/M byte which specifies the addressing mode.

For example: The VEX prefix's initial-byte values, 0xC4 and 0xC5, are the same as the opcodes of the LDS and LES instructions.

Similarly, the REX prefix's one-byte form has the four high-order bits set to four, which replaces sixteen opcodes numbered 0x40–0x4F.