x86 Opcode Map
Reverse lookup instructions by their hexadecimal encoding.
| Opcode | Mnemonic | Syntax | Format | Name |
|---|---|---|---|---|
| EVEX.512.66.0F38.W1 63 /r | vpcompressw | VPCOMPRESSW m512 {k1}, zmm1 | EVEX | Store Sparse Packed Word Integer Values |
| EVEX.512.66.0F38.W0 C4 /r | vpconflictd | VPCONFLICTD zmm1 {k1}, zmm2/m512 | EVEX | Detect Conflicts Within a Vector of Packed Dword Values |
| EVEX.512.66.0F38.W1 C4 /r | vpconflictq | VPCONFLICTQ zmm1 {k1}, zmm2/m512 | EVEX | Detect Conflicts Within a Vector of Packed Quadword Values |
| EVEX.512.66.0F38.W0 50 /r | vpdpbusd | VPDPBUSD zmm1, zmm2, zmm3/m512 | EVEX | Multiply and Add Unsigned and Signed Bytes |
| EVEX.512.66.0F38.W0 51 /r | vpdpbusds | VPDPBUSDS zmm1, zmm2, zmm3/m512 | EVEX | Multiply and Add Unsigned and Signed Bytes with Saturation |
| EVEX.512.66.0F38.W0 52 /r | vpdpwssd | VPDPWSSD zmm1, zmm2, zmm3/m512 | EVEX | Multiply and Add Signed Words |
| EVEX.512.66.0F38.W0 53 /r | vpdpwssds | VPDPWSSDS zmm1, zmm2, zmm3/m512 | EVEX | Multiply and Add Signed Words with Saturation |
| VEX.256.66.0F3A.W0 06 /r ib | vperm2f128 | VPERM2F128 ymm1, ymm2, ymm3/m256, imm8 | VEX | Permute Floating-Point 128-bit Blocks |
| VEX.256.66.0F3A.W0 46 /r ib | vperm2i128 | VPERM2I128 ymm1, ymm2, ymm3/m256, imm8 | VEX | Permute 128-bit Integer Blocks |
| EVEX.512.66.0F38.W0 8D /r | vpermb | VPERMB zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Packed Bytes |
| VEX.256.66.0F38.W0 36 /r | vpermd | VPERMD ymm1, ymm2, ymm3/m256 | VEX | Permute Doublewords |
| EVEX.512.66.0F38.W0 75 /r | vpermi2b | VPERMI2B zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Two-Source Bytes |
| EVEX.512.66.0F38.W0 76 /r | vpermi2d | VPERMI2D zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Two-Source Doublewords |
| EVEX.512.66.0F38.W1 76 /r | vpermi2q | VPERMI2Q zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Two-Source Quadwords |
| VEX.256.66.0F3A.W0 05 /r ib | vpermilpd | VPERMILPD ymm1, ymm2/m256, imm8 | AVX | Permute In-Lane Packed Double |
| VEX.256.66.0F3A.W0 04 /r ib | vpermilps | VPERMILPS ymm1, ymm2/m256, imm8 | AVX | Permute In-Lane Packed Single |
| VEX.256.66.0F38.W0 16 /r | vpermps | VPERMPS ymm1, ymm2, ymm3/m256 | VEX | Permute Single-Precision Floating-Point |
| VEX.256.66.0F3A.W1 00 /r ib | vpermq | VPERMQ ymm1, ymm2/m256, imm8 | VEX | Permute Quadword Integers |
| EVEX.512.66.0F38.W0 7D /r | vpermt2b | VPERMT2B zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Two-Source Bytes (Overwrite) |
| EVEX.512.66.0F38.W0 7E /r | vpermt2d | VPERMT2D zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Two-Source Doublewords (Overwrite) |
| EVEX.512.66.0F38.W1 7E /r | vpermt2q | VPERMT2Q zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Two-Source Quadwords (Overwrite) |
| EVEX.512.66.0F38.W1 8D /r | vpermw | VPERMW zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Permute Word Integers |
| EVEX.512.66.0F38.W0 62 /r | vpexpandb | VPEXPANDB zmm1 {k1}, m512 | EVEX | Load Sparse Packed Byte Integer Values |
| EVEX.512.66.0F38.W1 62 /r | vpexpandw | VPEXPANDW zmm1 {k1}, m512 | EVEX | Load Sparse Packed Word Integer Values |
| VEX.256.66.0F38.W0 90 /r | vpgatherdd | VPGATHERDD ymm1, [base+ymm_idx*scale], ymm_mask | VEX | Gather Packed Doubleword with Signed Doubleword Indices |
| VEX.256.66.0F38.W1 90 /r | vpgatherdq | VPGATHERDQ ymm1, [base+xmm_idx*scale], ymm_mask | VEX | Gather Packed Quadword with Signed Doubleword Indices |
| VEX.128.66.0F38.W0 91 /r | vpgatherqd | VPGATHERQD xmm1, [base+ymm_idx*scale], xmm_mask | VEX | Gather Packed Doubleword with Signed Quadword Indices |
| VEX.256.66.0F38.W1 91 /r | vpgatherqq | VPGATHERQQ ymm1, [base+ymm_idx*scale], ymm_mask | VEX | Gather Packed Quadword with Signed Quadword Indices |
| XOP.128.09.W0 C2 /r | vphaddbd | VPHADDBD xmm1, xmm2/m128 | XOP | Vector Packed Horizontal Add Byte to Doubleword |
| XOP.128.09.W0 C3 /r | vphaddbq | VPHADDBQ xmm1, xmm2/m128 | XOP | Vector Packed Horizontal Add Byte to Quadword |
| XOP.128.09.W0 C1 /r | vphaddbw | VPHADDBW xmm1, xmm2/m128 | XOP | Vector Packed Horizontal Add Byte to Word |
| XOP.128.09.W0 CB /r | vphadddq | VPHADDDQ xmm1, xmm2/m128 | XOP | Vector Packed Horizontal Add Doubleword to Quadword |
| XOP.128.09.W0 C6 /r | vphaddwd | VPHADDWD xmm1, xmm2/m128 | XOP | Vector Packed Horizontal Add Word to Doubleword |
| XOP.128.09.W0 C7 /r | vphaddwq | VPHADDWQ xmm1, xmm2/m128 | XOP | Vector Packed Horizontal Add Word to Quadword |
| EVEX.512.66.0F38.W0 44 /r | vplzcntd | VPLZCNTD zmm1 {k1}, zmm2/m512 | EVEX | Count Leading Zero Bits |
| EVEX.512.66.0F38.W1 44 /r | vplzcntq | VPLZCNTQ zmm1 {k1}, zmm2/m512 | EVEX | Count Leading Zero Bits Quadword |
| XOP.128.08.W0 85 /r ib | vpmacssww | VPMACSSWW xmm1, xmm2, xmm3, xmm4 | XOP | Vector Packed Multiply Accumulate Signed Saturate Word |
| XOP.128.08.W0 95 /r ib | vpmacsww | VPMACSWW xmm1, xmm2, xmm3, xmm4 | XOP | Vector Packed Multiply Accumulate Signed Word |
| EVEX.512.66.0F38.W1 B5 /r | vpmadd52huq | VPMADD52HUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Packed Multiply-Add Unsigned 52-bit Integers (High) |
| EVEX.512.66.0F38.W1 B4 /r | vpmadd52luq | VPMADD52LUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Packed Multiply-Add Unsigned 52-bit Integers (Low) |
| EVEX.512.66.0F38.W1 3D /r | vpmaxsq | VPMAXSQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Maximum of Packed Signed Quadword Integers |
| EVEX.512.66.0F38.W1 3F /r | vpmaxuq | VPMAXUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Maximum of Packed Unsigned Quadword Integers |
| EVEX.512.66.0F38.W1 39 /r | vpminsq | VPMINSQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Minimum of Packed Signed Quadword Integers |
| EVEX.512.66.0F38.W1 3B /r | vpminuq | VPMINUQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Minimum of Packed Unsigned Quadword Integers |
| EVEX.512.F3.0F38.W0 29 /r | vpmovb2m | VPMOVB2M k1, zmm1 | EVEX | Move Byte Mask to Mask Register |
| EVEX.512.F3.0F38.W0 39 /r | vpmovd2m | VPMOVD2M k1, zmm1 | EVEX | Move Doubleword Mask to Mask Register |
| EVEX.512.F3.0F38.W0 31 /r | vpmovdb | VPMOVDB xmm1/m128 {k1}, zmm2 | EVEX | Truncate Doubleword to Byte |
| EVEX.512.F3.0F38.W0 28 /r | vpmovm2b | VPMOVM2B zmm1, k1 | EVEX | Move Mask Register to Byte Mask |
| EVEX.512.F3.0F38.W0 38 /r | vpmovm2d | VPMOVM2D zmm1, k1 | EVEX | Move Mask Register to Doubleword Mask |
| EVEX.512.F3.0F38.W1 38 /r | vpmovm2q | VPMOVM2Q zmm1, k1 | EVEX | Move Mask Register to Quadword Mask |
| EVEX.512.F3.0F38.W1 28 /r | vpmovm2w | VPMOVM2W zmm1, k1 | EVEX | Move Mask Register to Word Mask |
| EVEX.512.F3.0F38.W1 39 /r | vpmovq2m | VPMOVQ2M k1, zmm1 | EVEX | Move Quadword Mask to Mask Register |
| EVEX.512.F3.0F38.W0 22 /r | vpmovsqb | VPMOVSQB xmm1/m128 {k1}, zmm2 | EVEX | Truncate Signed Quadword to Byte |
| EVEX.256.F3.0F38.W0 20 /r | vpmovswb | VPMOVSWB xmm1/m128 {k1}, zmm2 | EVEX | Truncate Signed Word to Byte |
| EVEX.512.F3.0F38.W0 11 /r | vpmovusdb | VPMOVUSDB xmm1/m128 {k1}, zmm2 | EVEX | Saturate Unsigned Doubleword to Byte |
| EVEX.128.F3.0F38.W0 12 /r | vpmovusqb | VPMOVUSQB xmm1/m128 {k1}, zmm2 | EVEX | Truncate Unsigned Quadword to Byte |
| EVEX.256.F3.0F38.W0 10 /r | vpmovuswb | VPMOVUSWB xmm1/m128 {k1}, zmm2 | EVEX | Truncate Unsigned Word to Byte |
| EVEX.512.F3.0F38.W1 29 /r | vpmovw2m | VPMOVW2M k1, zmm1 | EVEX | Move Word Mask to Mask Register |
| VEX.256.66.0F38.WIG 40 /r | vpmulld | VPMULLD ymm1, ymm2, ymm3/m256 | VEX | Packed Multiply Low Doubleword (AVX2) |
| EVEX.512.66.0F38.W1 40 /r | vpmullq | VPMULLQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Packed Multiply Low Quadword |
| EVEX.512.66.0F38.W1 83 /r | vpmultishiftqb | VPMULTISHIFTQB zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Select Packed Unaligned Bytes from Quadword Sources |
| EVEX.512.66.0F38.W0 54 /r | vpopcntb | VPOPCNTB zmm1 {k1}, zmm2/m512 | EVEX | Packed Population Count Byte |
| EVEX.512.66.0F38.W0 55 /r | vpopcntd | VPOPCNTD zmm1 {k1}, zmm2/m512 | EVEX | Packed Population Count Doubleword |
| EVEX.512.66.0F38.W1 55 /r | vpopcntq | VPOPCNTQ zmm1 {k1}, zmm2/m512 | EVEX | Packed Population Count Quadword |
| EVEX.512.66.0F38.W1 54 /r | vpopcntw | VPOPCNTW zmm1 {k1}, zmm2/m512 | EVEX | Packed Population Count Word |
| EVEX.512.66.0F.W1 72 /1 ib | vprolq | VPROLQ zmm1 {k1}, zmm2, imm8 | EVEX | Rotate Left Quadword |
| EVEX.512.66.0F38.W0 15 /r | vprolvd | VPROLVD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotate Left Doubleword Variable |
| EVEX.512.66.0F38.W1 15 /r | vprolvq | VPROLVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotate Left Quadword Variable |
| EVEX.512.66.0F.W1 72 /0 ib | vprorq | VPRORQ zmm1 {k1}, zmm2, imm8 | EVEX | Rotate Right Quadword |
| EVEX.512.66.0F38.W0 14 /r | vprorvd | VPRORVD zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotate Right Doubleword Variable |
| EVEX.512.66.0F38.W1 14 /r | vprorvq | VPRORVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Rotate Right Quadword Variable |
| XOP.128.08.W0 C0 /r ib | vprotb | VPROTB xmm1, xmm2/m128, imm8 | XOP | Vector Packed Rotate Byte |
| XOP.128.08.W0 C2 /r ib | vprotd | VPROTD xmm1, xmm2/m128, imm8 | XOP | Vector Packed Rotate Doubleword |
| XOP.128.08.W0 C3 /r ib | vprotq | VPROTQ xmm1, xmm2/m128, imm8 | XOP | Vector Packed Rotate Quadword |
| XOP.128.08.W0 C1 /r ib | vprotw | VPROTW xmm1, xmm2/m128, imm8 | XOP | Vector Packed Rotate Word |
| XOP.128.09.W0 98 /r | vpshab | VPSHAB xmm1, xmm2/m128, xmm3 | XOP | Vector Packed Shift Arithmetic Byte |
| XOP.128.09.W0 9A /r | vpshad | VPSHAD xmm1, xmm2/m128, xmm3 | XOP | Vector Packed Shift Arithmetic Doubleword |
| XOP.128.09.W0 9B /r | vpshaq | VPSHAQ xmm1, xmm2/m128, xmm3 | XOP | Vector Packed Shift Arithmetic Quadword |
| XOP.128.09.W0 99 /r | vpshaw | VPSHAW xmm1, xmm2/m128, xmm3 | XOP | Vector Packed Shift Arithmetic Word |
| EVEX.512.66.0F3A.W0 71 /r /ib | vpshldd | VPSHLDD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Shift Left Double Concatenate |
| EVEX.512.66.0F3A.W1 71 /r /ib | vpshldq | VPSHLDQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Shift Left Quadword Concatenate |
| EVEX.512.66.0F3A.W1 70 /r /ib | vpshldw | VPSHLDW zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Shift Left Word Concatenate |
| EVEX.512.66.0F3A.W0 73 /r /ib | vpshrdd | VPSHRDD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Shift Right Double Concatenate |
| EVEX.512.66.0F3A.W1 73 /r /ib | vpshrdq | VPSHRDQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Shift Right Quadword Concatenate |
| EVEX.512.66.0F3A.W1 72 /r /ib | vpshrdw | VPSHRDW zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Shift Right Word Concatenate |
| VEX.256.66.0F38.WIG 00 /r | vpshufb | VPSHUFB ymm1, ymm2, ymm3/m256 | VEX | Packed Shuffle Bytes (AVX2) |
| EVEX.512.66.0F38.W0 8F /r | vpshufbitqmb | VPSHUFBITQMB k1 {k2}, zmm2, zmm3/m512 | EVEX | Shuffle Bits from Quadword Elements to Mask |
| VEX.256.66.0F38.W0 47 /r | vpsllvd | VPSLLVD ymm1, ymm2, ymm3/m256 | AVX2 | Variable Bit Shift Left Logical Doubleword |
| VEX.256.66.0F38.W1 47 /r | vpsllvq | VPSLLVQ ymm1, ymm2, ymm3/m256 | AVX2 | Variable Bit Shift Left Logical Quadword |
| VEX.256.66.0F38.W0 46 /r | vpsravd | VPSRAVD ymm1, ymm2, ymm3/m256 | AVX2 | Variable Bit Shift Right Arithmetic Doubleword |
| EVEX.512.66.0F38.W1 46 /r | vpsravq | VPSRAVQ zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Variable Bit Shift Right Arithmetic Quadword |
| VEX.256.66.0F38.W0 45 /r | vpsrlvd | VPSRLVD ymm1, ymm2, ymm3/m256 | AVX2 | Variable Bit Shift Right Logical Doubleword |
| VEX.256.66.0F38.W1 45 /r | vpsrlvq | VPSRLVQ ymm1, ymm2, ymm3/m256 | AVX2 | Variable Bit Shift Right Logical Quadword |
| VEX.256.66.0F.WIG FA /r | vpsubd | VPSUBD ymm1, ymm2, ymm3/m256 | VEX | Packed Subtract Doubleword (AVX2) |
| EVEX.512.66.0F3A.W0 25 /r ib | vpternlogd | VPTERNLOGD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Doubleword Ternary Logic |
| EVEX.512.66.0F3A.W1 25 /r ib | vpternlogq | VPTERNLOGQ zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Packed Quadword Ternary Logic |
| EVEX.512.66.0F38.W0 26 /r | vptestmb | VPTESTMB k1 {k2}, zmm2, zmm3/m512 | EVEX | Packed Test Mask Byte |
| EVEX.512.66.0F38.W0 27 /r | vptestmd | VPTESTMD k1 {k2}, zmm2, zmm3/m512 | EVEX | Packed Test Mask Doubleword |
| EVEX.512.66.0F38.W1 27 /r | vptestmq | VPTESTMQ k1 {k2}, zmm2, zmm3/m512 | EVEX | Packed Test Mask Quadword |
| EVEX.512.66.0F38.W1 26 /r | vptestmw | VPTESTMW k1 {k2}, zmm2, zmm3/m512 | EVEX | Packed Test Mask Word |