background image

INSTRUCTION SET REFERENCE, A-L

3-4 Vol. 2A

— 66,F2,F3: The presence or absence of these values map to the VEX.pp field encodings. If absent, this 

corresponds to VEX.pp=00B. If present, the corresponding VEX.pp value affects the “opcode” byte in the 
same way as if a SIMD prefix (66H, F2H or F3H) does to the ensuing opcode byte. Thus a non-zero encoding 
of VEX.pp may be considered as an implied 66H/F2H/F3H prefix. The VEX.pp field may be encoded using 
either the 2-byte or 3-byte form of the VEX prefix.

— 0F,0F3A,0F38: The presence maps to a valid encoding of the VEX.mmmmm field. Only three encoded 

values of VEX.mmmmm are defined as valid, corresponding to the escape byte sequence of 0FH, 0F3AH 
and 0F38H. The effect of a valid VEX.mmmmm encoding on the ensuing opcode byte is same as if the corre-
sponding escape byte sequence on the ensuing opcode byte for non-VEX encoded instructions. Thus a valid 
encoding of VEX.mmmmm may be consider as an implies escape byte sequence of either 0FH, 0F3AH or 
0F38H. The VEX.mmmmm field must be encoded using the 3-byte form of VEX prefix. 

— 0F,0F3A,0F38 and 2-byte/3-byte VEX: The presence of 0F3A and 0F38 in the opcode column implies 

that opcode can only be encoded by the three-byte form of VEX. The presence of 0F in the opcode column 
does not preclude the opcode to be encoded by the two-byte of VEX if the semantics of the opcode does not 
require any subfield of VEX not present in the two-byte form of the VEX prefix.

— W0: VEX.W=0. 
— W1: VEX.W=1.
— The presence of W0/W1 in the opcode column applies to two situations: (a) it is treated as an extended 

opcode bit, (b) the instruction semantics support an operand size promotion to 64-bit of a general-purpose 
register operand or a 32-bit memory operand. The presence of W1 in the opcode column implies the opcode 
must be encoded using the 3-byte form of the VEX prefix. The presence of W0 in the opcode column does 
not preclude the opcode to be encoded using the C5H form of the VEX prefix, if the semantics of the opcode 
does not require other VEX subfields not present in the two-byte form of the VEX prefix. Please see Section 
2.3 on the 
subfield definitions within VEX.

— WIG: can use C5H form (if not requiring VEX.mmmmm) or VEX.W value is ignored in the C4H form of VEX 

prefix.

— If WIG is present, the instruction may be encoded using either the two-byte form or the three-byte form of 

VEX. When encoding the instruction using the three-byte form of VEX, the value of VEX.W is ignored. 

opcode — Instruction opcode.

/is4 — An 8-bit immediate byte is present containing a source register specifier in imm[7:4] and instruction-
specific payload in imm[3:0].

In general, the encoding o f VEX.R, VEX.X, VEX.B field are not shown explicitly in the opcode column. The 
encoding scheme of VEX.R, VEX.X, VEX.B fields must follow the rules defined in Section 2.3.

EVEX.[NDS/NDD/DDS].[128,256,512,LIG].[66,F2,F3].0F/0F3A/0F38.[W0,W1,WIG] opcode [/r] 
[ib,/is4]

EVEX — The EVEX prefix is encoded using the four-byte form (the first byte is 62H). Refer to Section 4.2 for 
more detail on the EVEX prefix.
The encoding of various sub-fields of the EVEX prefix is described using the following notations:
— NDS, NDD, DDS: implies that EVEX.vvvv (and EVEX.v’) field is valid for the encoding of an operand. It may 

specify either the source register (NDS) or the destination register (NDD). DDS expresses a syntax where 
vvvv encodes the second source register in a three-operand instruction syntax where the content of first 
source register will be overwritten by the result. If both NDS and NDD absent (i.e. EVEX.vvvv does not 
encode an operand), EVEX.vvvv must be 1111b (and EVEX.v’ must be 1b). 

— 128, 256, 512, LIG: This corresponds to the vector length; three values are allowed by EVEX: 512-bit, 

256-bit and 128-bit. Alternatively, vector length is ignored (LIG) for certain instructions; this typically 
applies to scalar instructions operating on one data element of a vector register.

— 66,F2,F3: The presence of these value maps to the EVEX.pp field encodings. The corresponding VEX.pp 

value affects the “opcode” byte in the same way as if a SIMD prefix (66H, F2H or F3H) does to the ensuing 
opcode byte. Thus a non-zero encoding of VEX.pp may be considered as an implied 66H/F2H/F3H prefix.