x86 Opcode Map
Reverse lookup instructions by their hexadecimal encoding.
| Opcode | Mnemonic | Syntax | Format | Name |
|---|---|---|---|---|
| NP 0F DD /r1 | paddusw | PADDUSW mm, mm/m64 | MMX | Packed Add Unsigned Saturate Word (MMX) |
| 66 0F DD | paddusw | PADDUSW xmm1, xmm2/m128 | SSE2 | Packed Add Unsigned Saturation Word |
| 66 0F FD | paddw | PADDW xmm, xmm/m128 | SSE2 | Packed Add Words |
| 66 0F 3A 0F | palignr | PALIGNR xmm1, xmm2/m128, imm8 | SSSE3 | Packed Align Right |
| NP 0F DB /r1 | pand | PAND mm, mm/m64 | MMX | Packed Logical AND (MMX) |
| 66 0F DB | pand | PAND xmm, xmm/m128 | SSE2 | Packed Logical AND |
| NP 0F DF /r1 | pandn | PANDN mm, mm/m64 | MMX | Packed Logical AND NOT (MMX) |
| F3 90 | pause | PAUSE | Legacy | Spin Loop Hint |
| 66 0F E0 | pavgb | PAVGB xmm1, xmm2/m128 | SSE2 | Average Packed Integers (Byte) |
| 66 0F E3 | pavgw | PAVGW xmm1, xmm2/m128 | SSE2 | Average Packed Integers (Word) |
| 66 0F 38 10 | pblendvb | PBLENDVB xmm1, xmm2/m128, <XMM0> | SSE4.1 | Variable Blend Packed Bytes |
| 66 0F 3A 0E | pblendw | PBLENDW xmm1, xmm2/m128, imm8 | SSE4.1 | Packed Blend Words |
| 66 0F 3A 44 | pclmulqdq | PCLMULQDQ xmm1, xmm2/m128, imm8 | PCLMUL | Carry-Less Multiplication |
| NP 0F 74 /r1 | pcmpeqb | PCMPEQB mm, mm/m64 | MMX | Packed Compare Equal Byte (MMX) |
| 66 0F 74 | pcmpeqb | PCMPEQB xmm, xmm/m128 | SSE2 | Packed Compare Equal Byte |
| NP 0F 76 /r1 | pcmpeqd | PCMPEQD mm, mm/m64 | MMX | Packed Compare Equal Doubleword (MMX) |
| 66 0F 76 | pcmpeqd | PCMPEQD xmm, xmm/m128 | SSE2 | Packed Compare Equal Doubleword |
| 66 0F 38 29 | pcmpeqq | PCMPEQQ xmm1, xmm2/m128 | SSE4.1 | Packed Compare Equal Quadword |
| NP 0F 75 /r1 | pcmpeqw | PCMPEQW mm, mm/m64 | MMX | Packed Compare Equal Word (MMX) |
| 66 0F 75 | pcmpeqw | PCMPEQW xmm, xmm/m128 | SSE2 | Packed Compare Equal Word |
| 66 0F 3A 61 | pcmpestri | PCMPESTRI xmm1, xmm2/m128, imm8 | SSE4.2 | Packed Compare Explicit Length Strings, Return Index |
| 66 0F 3A 60 | pcmpestrm | PCMPESTRM xmm1, xmm2/m128, imm8 | SSE4.2 | Packed Compare Explicit Length Strings, Return Mask |
| NP 0F 64 /r1 | pcmpgtb | PCMPGTB mm, mm/m64 | MMX | Packed Compare Greater Than Byte (MMX) |
| 66 0F 64 | pcmpgtb | PCMPGTB xmm1, xmm2/m128 | SSE2 | Packed Compare Greater Than Byte |
| NP 0F 66 /r1 | pcmpgtd | PCMPGTD mm, mm/m64 | MMX | Packed Compare Greater Than Doubleword (MMX) |
| 66 0F 66 | pcmpgtd | PCMPGTD xmm1, xmm2/m128 | SSE2 | Packed Compare Greater Than Doubleword |
| 66 0F 38 37 | pcmpgtq | PCMPGTQ xmm1, xmm2/m128 | SSE4.2 | Packed Compare Greater Than Quadword |
| NP 0F 65 /r1 | pcmpgtw | PCMPGTW mm, mm/m64 | MMX | Packed Compare Greater Than Word (MMX) |
| 66 0F 65 | pcmpgtw | PCMPGTW xmm1, xmm2/m128 | SSE2 | Packed Compare Greater Than Word |
| 66 0F 3A 63 | pcmpistri | PCMPISTRI xmm1, xmm2/m128, imm8 | SSE4.2 | Packed Compare Implicit Length Strings, Return Index |
| NP 0F 01 C5 | pconfig | PCONFIG | Legacy | Platform Configuration |
| VEX.LZ.F2.0F38.W0 F5 /r | pdep | PDEP r32, r32, r/m32 | VEX | Parallel Bits Deposit |
| VEX.LZ.F3.0F38.W0 F5 /r | pext | PEXT r32, r32, r/m32 | VEX | Parallel Bits Extract |
| 66 0F 3A 14 | pextrb | PEXTRB r32/m8, xmm1, imm8 | SSE4.1 | Packed Extract Byte |
| 66 0F 3A 16 | pextrd | PEXTRD r32/m32, xmm1, imm8 | SSE4.1 | Packed Extract Doubleword |
| 66 REX.W 0F 3A 16 /r ib | pextrq | PEXTRQ r64/m64, xmm1, imm8 | SSE4.1 | Packed Extract Quadword |
| 66 0F C5 | pextrw | PEXTRW r32, xmm1, imm8 | SSE | Packed Extract Word |
| 0F 0F /r 9E | pfadd | PFADD mm, mm/m64 | 3DNow! | Packed Floating-Point Add |
| 0F 0F /r B4 | pfmul | PFMUL mm, mm/m64 | 3DNow! | Packed Floating-Point Multiply |
| 0F 0F /r 96 | pfrcp | PFRCP mm, mm/m64 | 3DNow! | Packed Floating-Point Reciprocal |
| 0F 0F /r 97 | pfrsqrt | PFRSQRT mm, mm/m64 | 3DNow! | Packed Floating-Point Reciprocal Square Root |
| 0F 0F /r 9A | pfsub | PFSUB mm, mm/m64 | 3DNow! | Packed Floating-Point Subtract |
| 66 0F 38 01 | phaddw | PHADDW xmm1, xmm2/m128 | SSSE3 | Packed Horizontal Add Word |
| 66 0F 38 41 | phminposuw | PHMINPOSUW xmm1, xmm2/m128 | SSE4.1 | Packed Horizontal Minimum |
| 66 0F 38 06 | phsubd | PHSUBD xmm1, xmm2/m128 | SSSE3 | Packed Horizontal Subtract Doubleword |
| 66 0F 38 05 | phsubw | PHSUBW xmm1, xmm2/m128 | SSSE3 | Packed Horizontal Subtract Word |
| 66 0F 3A 20 | pinsrb | PINSRB xmm1, r32/m8, imm8 | SSE4.1 | Packed Insert Byte |
| 66 0F 3A 22 | pinsrd | PINSRD xmm1, r32/m32, imm8 | SSE4.1 | Packed Insert Doubleword |
| 66 REX.W 0F 3A 22 /r ib | pinsrq | PINSRQ xmm1, r64/m64, imm8 | SSE4.1 | Packed Insert Quadword |
| 66 0F C4 | pinsrw | PINSRW xmm1, r32/m16, imm8 | SSE | Packed Insert Word |
| 66 0F 38 04 | pmaddubsw | PMADDUBSW xmm1, xmm2/m128 | SSSE3 | Multiply and Add Packed Signed and Unsigned Bytes |
| NP 0F F5 /r1 | pmaddwd | PMADDWD mm, mm/m64 | MMX | Packed Multiply Add Word to Doubleword (MMX) |
| 66 0F F5 | pmaddwd | PMADDWD xmm1, xmm2/m128 | SSE2 | Packed Multiply and Add Word to Doubleword |
| 66 0F 38 3C | pmaxsb | PMAXSB xmm1, xmm2/m128 | SSE4.1 | Maximum of Packed Signed Byte Integers |
| 66 0F 38 3D | pmaxsd | PMAXSD xmm1, xmm2/m128 | SSE4.1 | Maximum of Packed Signed Doubleword Integers |
| 66 0F EE | pmaxsw | PMAXSW xmm1, xmm2/m128 | SSE2 | Maximum of Packed Signed Word Integers |
| 66 0F DE | pmaxub | PMAXUB xmm1, xmm2/m128 | SSE2 | Maximum of Packed Unsigned Byte Integers |
| 66 0F 38 3F | pmaxud | PMAXUD xmm1, xmm2/m128 | SSE4.1 | Maximum of Packed Unsigned Doubleword Integers |
| 66 0F 38 3E | pmaxuw | PMAXUW xmm1, xmm2/m128 | SSE4.1 | Maximum of Packed Unsigned Word Integers |
| 66 0F 38 38 | pminsb | PMINSB xmm1, xmm2/m128 | SSE4.1 | Minimum of Packed Signed Byte Integers |
| 66 0F 38 39 | pminsd | PMINSD xmm1, xmm2/m128 | SSE4.1 | Minimum of Packed Signed Doubleword Integers |
| 66 0F EA | pminsw | PMINSW xmm1, xmm2/m128 | SSE2 | Minimum of Packed Signed Word Integers |
| 66 0F DA | pminub | PMINUB xmm1, xmm2/m128 | SSE2 | Minimum of Packed Unsigned Byte Integers |
| 66 0F 38 3B | pminud | PMINUD xmm1, xmm2/m128 | SSE4.1 | Minimum of Packed Unsigned Doubleword Integers |
| 66 0F 38 3A | pminuw | PMINUW xmm1, xmm2/m128 | SSE4.1 | Minimum of Packed Unsigned Word Integers |
| 66 0F D7 | pmovmskb | PMOVMSKB r32, xmm | SSE2 | Move Byte Mask |
| 66 0F 38 22 | pmovsxbq | PMOVSXBQ xmm1, xmm2/m16 | SSE4.1 | Packed Move with Sign Extend Byte to Quadword |
| 66 0F 38 20 | pmovsxbw | PMOVSXBW xmm1, xmm2/m64 | SSE4.1 | Packed Move with Sign Extend Byte to Word |
| 66 0F 38 25 | pmovsxdq | PMOVSXDQ xmm1, xmm2/m64 | SSE4.1 | Packed Move with Sign Extend Doubleword to Quadword |
| 66 0F 38 23 | pmovsxwd | PMOVSXWD xmm1, xmm2/m64 | SSE4.1 | Packed Move with Sign Extend Word to Doubleword |
| 66 0F 38 24 | pmovsxwq | PMOVSXWQ xmm1, xmm2/m32 | SSE4.1 | Packed Move with Sign Extend Word to Quadword |
| 66 0F 38 31 | pmovzxbd | PMOVZXBD xmm1, xmm2/m32 | SSE4.1 | Packed Move with Zero Extend Byte to Doubleword |
| 66 0F 38 32 | pmovzxbq | PMOVZXBQ xmm1, xmm2/m16 | SSE4.1 | Packed Move with Zero Extend Byte to Quadword |
| 66 0F 38 30 | pmovzxbw | PMOVZXBW xmm1, xmm2/m64 | SSE4.1 | Packed Move with Zero Extend Byte to Word |
| 66 0F 38 35 | pmovzxdq | PMOVZXDQ xmm1, xmm2/m64 | SSE4.1 | Packed Move with Zero Extend Doubleword to Quadword |
| 66 0F 38 33 | pmovzxwd | PMOVZXWD xmm1, xmm2/m64 | SSE4.1 | Packed Move with Zero Extend Word to Doubleword |
| 66 0F 38 34 | pmovzxwq | PMOVZXWQ xmm1, xmm2/m32 | SSE4.1 | Packed Move with Zero Extend Word to Quadword |
| 66 0F 38 0B | pmulhrsw | PMULHRSW xmm1, xmm2/m128 | SSSE3 | Packed Multiply High with Round and Scale |
| 66 0F E4 | pmulhuw | PMULHUW xmm1, xmm2/m128 | SSE2 | Packed Multiply High Unsigned |
| NP 0F E5 /r1 | pmulhw | PMULHW mm, mm/m64 | MMX | Packed Multiply High Word (MMX) |
| 66 0F E5 | pmulhw | PMULHW xmm1, xmm2/m128 | SSE2 | Packed Multiply High Signed |
| 66 0F 38 40 | pmulld | PMULLD xmm1, xmm2/m128 | SSE4.1 | Packed Multiply Low Doubleword |
| NP 0F D5 /r1 | pmullw | PMULLW mm, mm/m64 | MMX | Packed Multiply Low Word (MMX) |
| 66 0F D5 | pmullw | PMULLW xmm1, xmm2/m128 | SSE2 | Packed Multiply Low Word |
| 66 0F F4 | pmuludq | PMULUDQ xmm1, xmm2/m128 | SSE2 | Multiply Packed Unsigned Doubleword Integers |
| 8F /0 | pop | POP r/m | Legacy | Pop Value from Stack |
| 61 | popa | POPA | Legacy | Pop All General-Purpose Registers |
| F3 0F B8 | popcnt | POPCNT r, r/m | VEX | Population Count |
| 9D | popf | POPF | Legacy | Pop Flags |
| NP 0F EB /r1 | por | POR mm, mm/m64 | MMX | Packed Logical OR (MMX) |
| 66 0F EB | por | POR xmm, xmm/m128 | SSE2 | Packed Logical OR |
| 0F 18 /0 | prefetchnta | PREFETCHNTA m8 | SSE | Prefetch Data using Non-Temporal Access |
| 0F 18 /1 | prefetcht0 | PREFETCHT0 m8 | SSE | Prefetch Data into all Cache Levels |
| 0F 18 /2 | prefetcht1 | PREFETCHT1 m8 | SSE | Prefetch Data to L2 Cache |
| 0F 18 /3 | prefetcht2 | PREFETCHT2 m8 | SSE | Prefetch Data to L3 Cache |
| 0F 0D /1 | prefetchw | PREFETCHW m8 | Legacy | Prefetch Data into Caches in Anticipation of a Write |
| 0F 0D /2 | prefetchwt1 | PREFETCHWT1 m8 | Legacy | Prefetch Hint T1 with Intent to Write |
| 66 0F F6 | psadbw | PSADBW xmm1, xmm2/m128 | SSE2 | Compute Sum of Absolute Differences |
| 66 0F 38 00 | pshufb | PSHUFB xmm1, xmm2/m128 | SSSE3 | Packed Shuffle Bytes |
| 66 0F 70 | pshufd | PSHUFD xmm, xmm/m128, imm8 | SSE2 | Packed Shuffle Doubleword |