x86 Opcode Map
Reverse lookup instructions by their hexadecimal encoding.
| Opcode | Mnemonic | Syntax | Format | Name |
|---|---|---|---|---|
| EVEX.512.0F.W1 79 /r | vcvtpd2udq | VCVTPD2UDQ ymm1 {k1}, zmm2/m512 | EVEX | Convert Packed Double to Unsigned Doubleword |
| EVEX.512.66.0F.W1 79 /r | vcvtpd2uqq | VCVTPD2UQ zmm1 {k1}, zmm2/m512 | EVEX | Convert Packed Double to Unsigned Quadword |
| VEX.128.66.0F38.W0 13 /r | vcvtph2ps | VCVTPH2PS xmm1, xmm2/m64 | VEX | Convert 16-bit FP to 32-bit FP |
| VEX.256.66.0F.WIG 5B /r | vcvtps2dq | VCVTPS2DQ ymm1, ymm2/m256 | VEX | Convert Packed Single to Packed Doubleword |
| VEX.128.66.0F3A.W0 1D /r ib | vcvtps2ph | VCVTPS2PH xmm1/m64, xmm2, imm8 | VEX | Convert 32-bit FP to 16-bit FP |
| EVEX.512.0F.W0 79 /r | vcvtps2udq | VCVTPS2UDQ zmm1 {k1}, zmm2/m512 | EVEX | Convert Packed Single to Unsigned Doubleword |
| EVEX.512.66.0F.W0 79 /r | vcvtps2uqq | VCVTPS2UQ zmm1 {k1}, ymm2/m256 | EVEX | Convert Packed Single to Unsigned Quadword |
| VEX.256.F3.0F.WIG 5B /r | vcvttps2dq | VCVTTPS2DQ ymm1, ymm2/m256 | VEX | Convert with Truncation Packed Single to Doubleword |
| EVEX.512.F3.0F.W0 7A /r | vcvtudq2pd | VCVTUDQ2PD zmm1 {k1}, ymm2/m256 | EVEX | Convert Packed Unsigned Doubleword to Double |
| EVEX.512.F2.0F.W0 7A /r | vcvtudq2ps | VCVTUDQ2PS zmm1 {k1}, zmm2/m512 | EVEX | Convert Packed Unsigned Doubleword Integers to Packed Single-Precision Floating-Point |
| EVEX.512.F3.0F.W1 7A /r | vcvtuqq2pd | VCVTUQQ2PD zmm1 {k1}, zmm2/m512 | EVEX | Convert Packed Unsigned Quadword to Double |
| EVEX.512.F2.0F.W1 7A /r | vcvtuqq2ps | VCVTUQQ2PS ymm1 {k1}, zmm2/m512 | EVEX | Convert Packed Unsigned Quadword to Single |
| EVEX.512.66.0F3A.W0 42 /r ib | vdbpsadbw | VDBPSADBW zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Double Block Packed Sum-Absolute-Differences |
| EVEX.512.NP.MAP5.W0 5E /r | vdivph | VDIVPH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Divide Packed FP16 Values |
| EVEX.LLIG.F3.MAP5.W0 5E /r | vdivsh | VDIVSH xmm1 {k1}, xmm2, xmm3/m16 | EVEX | Divide Scalar Half-Precision |
| EVEX.512.F3.0F38.W0 52 /r | vdpbf16ps | VDPBF16PS zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Dot Product BFloat16 to Packed Single |
| 0F 00 /4 | verr | VERR r/m16 | System | Verify Segment for Reading |
| 0F 00 /5 | verw | VERW r/m16 | System | Verify Segment for Writing |
| EVEX.512.66.0F38.W1 88 /r | vexpandpd | VEXPANDPD zmm1 {k1}, m512 | EVEX | Load Sparse Packed Double-Precision Floating-Point Values |
| EVEX.512.66.0F38.W0 88 /r | vexpandps | VEXPANDPS zmm1 {k1}, m512 | EVEX | Load Sparse Packed Single-Precision Floating-Point Values |
| VEX.256.66.0F3A.W0 19 /r ib | vextractf128 | VEXTRACTF128 xmm1/m128, ymm2, imm8 | VEX | Extract Float 128-bit |
| VEX.256.66.0F3A.W0 39 /r ib | vextracti128 | VEXTRACTI128 xmm1/m128, ymm2, imm8 | VEX | Extract Integer 128-bit |
| EVEX.512.F2.MAP6.W0 56 /r | vfcmaddcph | VFCMADDCPH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Complex Conjugate Multiply-Add FP16 |
| EVEX.512.66.0F3A.W1 54 /r ib | vfixupimmpd | VFIXUPIMMPD zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Fix Up Special Packed Float64 Values |
| EVEX.512.66.0F3A.W0 54 /r ib | vfixupimmps | VFIXUPIMMPS zmm1 {k1}, zmm2, zmm3/m512, imm8 | EVEX | Fix Up Special Packed Float32 Values |
| EVEX.LLIG.66.0F3A.W0 55 /r ib | vfixupimmss | VFIXUPIMMSS xmm1 {k1}, xmm2, xmm3/m32, imm8 | EVEX | Fix Up Special Scalar Float32 Value |
| EVEX.512.66.MAP6.W0 98 /r | vfmadd132ph | VFMADD132PH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Fused Multiply-Add (132) Packed FP16 |
| VEX.256.66.0F38.W0 98 /r | vfmadd132ps | VFMADD132PS ymm1, ymm2, ymm3/m256 | VEX | Fused Multiply-Add (132) Packed Single |
| EVEX.LLIG.66.MAP6.W0 99 /r | vfmadd132sh | VFMADD132SH xmm1 {k1}, xmm2, xmm3/m16 | EVEX | Fused Multiply-Add Scalar Half-Precision (132) |
| VEX.LIG.66.0F38.W0 99 /r | vfmadd132ss | VFMADD132SS xmm1, xmm2, xmm3/m32 | FMA3 | Fused Multiply-Add Scalar Single (132) |
| EVEX.512.66.MAP6.W0 A8 /r | vfmadd213ph | VFMADD213PH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Fused Multiply-Add (213) Packed FP16 |
| VEX.256.66.0F38.W0 A8 /r | vfmadd213ps | VFMADD213PS ymm1, ymm2, ymm3/m256 | VEX | Fused Multiply-Add (213) Packed Single |
| VEX.LIG.66.0F38.W0 A9 /r | vfmadd213ss | VFMADD213SS xmm1, xmm2, xmm3/m32 | FMA3 | Fused Multiply-Add Scalar Single (213) |
| EVEX.512.66.MAP6.W0 B8 /r | vfmadd231ph | VFMADD231PH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Fused Multiply-Add (231) Packed FP16 |
| VEX.256.66.0F38.0 B8 /r | vfmadd231ps | VFMADD231PS ymm1, ymm2, ymm3/m256 | VEX | Fused Multiply-Add (132) |
| VEX.LIG.66.0F38.W0 B9 /r | vfmadd231ss | VFMADD231SS xmm1, xmm2, xmm3/m32 | FMA3 | Fused Multiply-Add Scalar Single (231) |
| EVEX.512.F3.MAP6.W0 56 /r | vfmaddcph | VFMADDCPH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Complex Multiply-Add FP16 |
| EVEX.LLIG.F3.MAP6.W0 57 /r | vfmaddcsh | VFMADDCSH xmm1 {k1}, xmm2, xmm3/m32 | EVEX | Complex Multiply-Add Scalar FP16 |
| VEX.256.66.0F38.W0 9A /r | vfmsub132ps | VFMSUB132PS ymm1, ymm2, ymm3/m256 | VEX | Fused Multiply-Subtract (132) Packed Single |
| VEX.256.66.0F38.W0 9C /r | vfnmadd132ps | VFNMADD132PS ymm1, ymm2, ymm3/m256 | VEX | Fused Negative Multiply-Add (132) Packed Single |
| EVEX.512.66.0F3A.W1 66 /r ib | vfpclasspd | VFPCLASSPD k1 {k2}, zmm2/m512, imm8 | EVEX | Floating-Point Class Double |
| EVEX.512.66.0F3A.W0 66 /r ib | vfpclassps | VFPCLASSPS k1 {k2}, zmm2/m512, imm8 | EVEX | Floating-Point Class Single |
| VEX.256.66.0F38.W1 92 /r | vgatherdpd | VGATHERDPD ymm1, [base+xmm_idx*scale], ymm_mask | VEX | Gather Packed Double Precision |
| VEX.256.66.0F38.W0 92 /r | vgatherdps | VGATHERDPS ymm1, [base+ymm_idx*scale], ymm_mask | VEX | Gather Packed Single Precision |
| EVEX.512.66.0F38.W1 C6 /1 /vsib | vgatherpf0dpd | VGATHERPF0DPD {k1}, [base+ymm_idx] | EVEX | Gather Prefetch Packed Double (L1) |
| EVEX.512.66.0F38.W0 C6 /1 /vsib | vgatherpf0dps | VGATHERPF0DPS {k1}, [base+zmm_idx] | EVEX | Gather Prefetch Packed Single (L1) |
| EVEX.512.66.0F38.W1 C7 /1 /vsib | vgatherpf0qpd | VGATHERPF0QPD {k1}, [base+zmm_idx] | EVEX | Gather Prefetch Packed Double (L1, Qword Indices) |
| EVEX.512.66.0F38.W0 C7 /1 /vsib | vgatherpf0qps | VGATHERPF0QPS {k1}, [base+zmm_idx] | EVEX | Gather Prefetch Packed Single (L1, Qword Indices) |
| EVEX.512.66.0F38.W1 42 /r | vgetexppd | VGETEXPPD zmm1 {k1}, zmm2/m512 | EVEX | Get Exponent Packed Double-Precision |
| EVEX.LLIG.66.0F38.W0 43 /r | vgetexpss | VGETEXPSS xmm1 {k1}, xmm2, xmm3/m32 | EVEX | Get Exponent Scalar Single |
| EVEX.512.66.0F3A.W1 26 /r ib | vgetmantpd | VGETMANTPD zmm1 {k1}, zmm2/m512, imm8 | EVEX | Get Mantissa Packed Double-Precision |
| EVEX.LLIG.66.0F3A.W1 27 /r ib | vgetmantsd | VGETMANTSD xmm1 {k1}, xmm2, xmm3/m64, imm8 | EVEX | Get Mantissa Scalar Double |
| VEX.256.66.0F3A.W0 18 /r ib | vinsertf128 | VINSERTF128 ymm1, ymm2, xmm3/m128, imm8 | VEX | Insert Float 128-bit |
| VEX.256.66.0F3A.W0 38 /r ib | vinserti128 | VINSERTI128 ymm1, ymm2, xmm3/m128, imm8 | VEX | Insert Integer 128-bit |
| VEX.256.66.0F38.W0 2D /r | vmaskmovpd | VMASKMOVPD ymm1, ymm2, m256 | VEX | Conditional Move Packed Double-Precision |
| VEX.256.66.0F38.W0 2C /r | vmaskmovps | VMASKMOVPS ymm1, ymm2, m256 | VEX | Conditional Move Packed Single-Precision |
| EVEX.512.NP.MAP5.W0 5F /r | vmaxph | VMAXPH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Maximum Packed FP16 Values |
| 0F 01 C1 | vmcall | VMCALL | VMX | Call to VM Monitor |
| 66 0F C7 /6 | vmclear | VMCLEAR m64 | VMX | Clear Virtual-Machine Control Structure |
| NP 0F 01 D4 | vmfunc | VMFUNC | VMX | Virtual Machine Function |
| EVEX.512.NP.MAP5.W0 5D /r | vminph | VMINPH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Minimum Packed FP16 Values |
| 0F 01 C2 | vmlaunch | VMLAUNCH | VMX | Launch Virtual Machine |
| 0F 01 DA | vmload | VMLOAD | SVM | Load State from VMCB |
| NP 0F C7 /6 | vmptrld | VMPTRLD m64 | VMX | Load Pointer to VMCS |
| NP 0F C7 /7 | vmptrst | VMPTRST m64 | VMX | Store Pointer to VMCS |
| NP 0F 78 | vmread | VMREAD r/m64, r64 | VMX | Read Field from VMCS |
| 0F 01 C3 | vmresume | VMRESUME | VMX | Resume Virtual Machine |
| 0F 01 D8 | vmrun | VMRUN | SVM | Run Virtual Machine |
| 0F 01 DB | vmsave | VMSAVE | SVM | Save State to VMCB |
| EVEX.512.NP.MAP5.W0 59 /r | vmulph | VMULPH zmm1 {k1}, zmm2, zmm3/m512 | EVEX | Multiply Packed FP16 Values |
| VEX.256.0F.WIG 59 /r | vmulps | VMULPS ymm1, ymm2, ymm3/m256 | VEX | Multiply Packed Single-Precision (AVX) |
| EVEX.LLIG.F3.MAP5.W0 59 /r | vmulsh | VMULSH xmm1 {k1}, xmm2, xmm3/m16 | EVEX | Multiply Scalar Half-Precision |
| EVEX.LLIG.F3.0F.W0 59 /r | vmulss | VMULSS xmm1 {k1}, xmm2, xmm3/m32 | EVEX | Multiply Scalar Single-Precision (EVEX) |
| NP 0F 79 | vmwrite | VMWRITE r64, r/m64 | VMX | Write Field to VMCS |
| 0F 01 C4 | vmxoff | VMXOFF | VMX | Leave VMX Operation |
| F3 0F C7 !(11):110:bbb | vmxon | VMXON m64 | VMX | Enter VMX Operation |
| EVEX.NDS.512.F2.0F38.W0 68 /r | vp2intersectd | VP2INTERSECTD k1+1, zmm2, zmm3/m512 | EVEX | Compute Intersection Pair Doublewords |
| EVEX.NDS.512.F2.0F38.W1 68 /r | vp2intersectq | VP2INTERSECTQ k1+1, zmm2, zmm3/m512 | EVEX | Compute Intersection Pair Quadwords |
| EVEX.512.F2.0F38.W0 52 /r | vp4dpwssd | VP4DPWSSD zmm1 {k1}, zmm2+3, m128 | EVEX | Dot Product Signed Word to Signed Doubleword (4-iterations) |
| EVEX.512.F2.0F38.W0 53 /r | vp4dpwssds | VP4DPWSSDS zmm1 {k1}, zmm2+3, m128 | EVEX | Dot Product Signed Word to Signed Doubleword Saturate (4-iter) |
| EVEX.512.66.0F38.W0 1E /r | vpabsd | VPABSD zmm1 {k1}, zmm2/m512 | EVEX | Packed Absolute Value Doubleword |
| EVEX.512.66.0F38.W1 1F /r | vpabsq | VPABSQ zmm1 {k1}, zmm2/m512 | EVEX | Packed Absolute Value Quadword |
| VEX.256.66.0F.WIG FC /r | vpaddb | VPADDB ymm1, ymm2, ymm3/m256 | VEX | Packed Add Byte (AVX2) |
| VEX.256.66.0F.WIG FE /r | vpaddd | VPADDD ymm1, ymm2, ymm3/m256 | VEX | Packed Add Doubleword (AVX2) |
| VEX.256.66.0F38.W0 78 /r | vpbroadcastb | VPBROADCASTB ymm1, xmm2/m8 | VEX | Broadcast Byte |
| VEX.256.66.0F38.W0 58 /r | vpbroadcastd | VPBROADCASTD ymm1, xmm2/m32 | AVX2 | Broadcast Doubleword |
| VEX.256.66.0F38.W0 59 /r | vpbroadcastq | VPBROADCASTQ ymm1, xmm2/m64 | VEX | Broadcast Quadword |
| VEX.256.66.0F38.W0 79 /r | vpbroadcastw | VPBROADCASTW ymm1, xmm2/m16 | VEX | Broadcast Word |
| VEX.128.66.0F3A.WIG 44 /r ib | vpclmulqdq | VPCLMULQDQ zmm1, zmm2, zmm3/m512, imm8 | EVEX | Vector Carry-Less Multiplication (AVX512) |
| XOP.128.08.W0 A2 /r ib | vpcmov | VPCMOV xmm1, xmm2, xmm3, xmm4 | XOP | Vector Packed Conditional Move |
| EVEX.512.66.0F3A.W0 3F /r ib | vpcmpb | VPCMPB k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Byte Integers |
| EVEX.512.66.0F3A.W0 1F /r ib | vpcmpd | VPCMPD k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Doubleword Integers |
| EVEX.512.66.0F3A.W1 1F /r ib | vpcmpq | VPCMPQ k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Quadword Integers |
| EVEX.512.66.0F3A.W0 3E /r ib | vpcmpub | VPCMPUB k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Unsigned Byte Integers |
| EVEX.512.66.0F3A.W0 1E /r ib | vpcmpud | VPCMPUD k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Unsigned Doubleword Integers |
| EVEX.512.66.0F3A.W1 1E /r ib | vpcmpuq | VPCMPUQ k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Unsigned Quadword Integers |
| EVEX.512.66.0F3A.W1 3E /r ib | vpcmpuw | VPCMPUW k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Unsigned Word Integers |
| EVEX.512.66.0F3A.W1 3F /r ib | vpcmpw | VPCMPW k1 {k2}, zmm2, zmm3/m512, imm8 | EVEX | Compare Packed Word Integers |
| XOP.128.08.W0 CC /r ib | vpcomb | VPCOMB xmm1, xmm2, xmm3/m128, imm8 | XOP | Vector Packed Compare Byte |
| EVEX.512.66.0F38.W0 63 /r | vpcompressb | VPCOMPRESSB m512 {k1}, zmm1 | EVEX | Store Sparse Packed Byte Integer Values |