x86 Instructions
957 instructions - showing 100 per page, page 5 of 10 - click any row to view encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Extension | Summary |
|---|---|---|---|---|
| paddusw | PADDUSW mm, mm/m64 | MMX | MMX | Adds 4 unsigned words with saturation (MMX). |
| paddusw | PADDUSW xmm1, xmm2/m128 | SSE2 | SSE2 | Adds 16-bit words with unsigned saturation. |
| paddw | PADDW xmm, xmm/m128 | SSE2 | SSE2 | Adds 8 words (Wraparound). |
| palignr | PALIGNR xmm1, xmm2/m128, imm8 | SSSE3 | SSSE3 | Concatenates dest and src, extracts 128 bits byte-aligned. |
| pand | PAND mm, mm/m64 | MMX | MMX | Bitwise AND of 64-bit MMX registers. |
| pand | PAND xmm, xmm/m128 | SSE2 | SSE2 | Bitwise AND of 128-bit integers. |
| pandn | PANDN mm, mm/m64 | MMX | MMX | Bitwise AND NOT of 64-bit MMX registers. |
| pause | PAUSE | Legacy | Base | Improves performance of spin-wait loops (alias for REP NOP). |
| pavgb | PAVGB xmm1, xmm2/m128 | SSE2 | SSE2 | Averages packed unsigned bytes (rounded up). |
| pavgw | PAVGW xmm1, xmm2/m128 | SSE2 | SSE2 | Averages packed unsigned words (rounded up). |
| pblendvb | PBLENDVB xmm1, xmm2/m128, <XMM0> | SSE4.1 | SSE4.1 | Blends bytes based on variable mask in XMM0. |
| pblendw | PBLENDW xmm1, xmm2/m128, imm8 | SSE4.1 | SSE4.1 | Selects words from two sources based on immediate mask. |
| pclmulqdq | PCLMULQDQ xmm1, xmm2/m128, imm8 | PCLMUL | PCLMULQDQ | Performs carry-less multiplication (Galois Field math for AES-GCM). |
| pcmpeqb | PCMPEQB mm, mm/m64 | MMX | MMX | Compares bytes for equality (MMX). |
| pcmpeqb | PCMPEQB xmm, xmm/m128 | SSE2 | SSE2 | Compares bytes for equality (Result mask 0xFF or 0x00). |
| pcmpeqd | PCMPEQD mm, mm/m64 | MMX | MMX | Compares doublewords for equality (MMX). |
| pcmpeqd | PCMPEQD xmm, xmm/m128 | SSE2 | SSE2 | Compares doublewords for equality. |
| pcmpeqq | PCMPEQQ xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Checks if 64-bit integer elements are equal. |
| pcmpeqw | PCMPEQW mm, mm/m64 | MMX | MMX | Compares words for equality (MMX). |
| pcmpeqw | PCMPEQW xmm, xmm/m128 | SSE2 | SSE2 | Compares words for equality. |
| pcmpestri | PCMPESTRI xmm1, xmm2/m128, imm8 | SSE4.2 | SSE4.2 | Complex string search/compare; returns index in ECX. |
| pcmpestrm | PCMPESTRM xmm1, xmm2/m128, imm8 | SSE4.2 | SSE4.2 | Complex string search/compare; returns mask in XMM0. |
| pcmpgtb | PCMPGTB mm, mm/m64 | MMX | MMX | Compares bytes for greater than (MMX). |
| pcmpgtb | PCMPGTB xmm1, xmm2/m128 | SSE2 | SSE2 | Compares bytes for greater than (signed). |
| pcmpgtd | PCMPGTD mm, mm/m64 | MMX | MMX | Compares doublewords for greater than (MMX). |
| pcmpgtd | PCMPGTD xmm1, xmm2/m128 | SSE2 | SSE2 | Compares doublewords for greater than (signed). |
| pcmpgtq | PCMPGTQ xmm1, xmm2/m128 | SSE4.2 | SSE4.2 | Compares quadwords for greater than (signed). |
| pcmpgtw | PCMPGTW mm, mm/m64 | MMX | MMX | Compares words for greater than (MMX). |
| pcmpgtw | PCMPGTW xmm1, xmm2/m128 | SSE2 | SSE2 | Compares words for greater than (signed). |
| pcmpistri | PCMPISTRI xmm1, xmm2/m128, imm8 | SSE4.2 | SSE4.2 | String search (null-terminated); returns index in ECX. |
| pconfig | PCONFIG | Legacy | PCONFIG | Configures platform features like MKTME (Memory Encryption). |
| pdep | PDEP r32, r32, r/m32 | VEX | BMI2 | Scatters bits from LSB of source to positions marked in mask. |
| pext | PEXT r32, r32, r/m32 | VEX | BMI2 | Extracts bits from source using mask and packs them to LSB. |
| pextrb | PEXTRB r32/m8, xmm1, imm8 | SSE4.1 | SSE4.1 | Extracts a byte from XMM to integer register. |
| pextrd | PEXTRD r32/m32, xmm1, imm8 | SSE4.1 | SSE4.1 | Extracts a doubleword from XMM to register. |
| pextrq | PEXTRQ r64/m64, xmm1, imm8 | SSE4.1 | SSE4.1 | Extracts a quadword from XMM to register. |
| pextrw | PEXTRW r32, xmm1, imm8 | SSE | SSE | Extracts a word from XMM to integer register. |
| pfadd | PFADD mm, mm/m64 | 3DNow! | 3DNow! | Adds two packed floats (3DNow!). |
| pfmul | PFMUL mm, mm/m64 | 3DNow! | 3DNow! | Multiplies packed floats (3DNow!). |
| pfrcp | PFRCP mm, mm/m64 | 3DNow! | 3DNow! | Approximates reciprocal (3DNow!). |
| pfrsqrt | PFRSQRT mm, mm/m64 | 3DNow! | 3DNow! | Approximates reciprocal sqrt (3DNow!). |
| pfsub | PFSUB mm, mm/m64 | 3DNow! | 3DNow! | Subtracts packed floats (3DNow!). |
| phaddw | PHADDW xmm1, xmm2/m128 | SSSE3 | SSSE3 | Adds adjacent 16-bit integers horizontally. |
| phminposuw | PHMINPOSUW xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Finds minimum word and its index. |
| phsubd | PHSUBD xmm1, xmm2/m128 | SSSE3 | SSSE3 | Subtracts adjacent 32-bit integers horizontally. |
| phsubw | PHSUBW xmm1, xmm2/m128 | SSSE3 | SSSE3 | Subtracts adjacent 16-bit integers horizontally. |
| pinsrb | PINSRB xmm1, r32/m8, imm8 | SSE4.1 | SSE4.1 | Inserts a byte from integer register into XMM. |
| pinsrd | PINSRD xmm1, r32/m32, imm8 | SSE4.1 | SSE4.1 | Inserts a doubleword from register to XMM. |
| pinsrq | PINSRQ xmm1, r64/m64, imm8 | SSE4.1 | SSE4.1 | Inserts a quadword from register to XMM. |
| pinsrw | PINSRW xmm1, r32/m16, imm8 | SSE | SSE | Inserts a word from integer register into XMM. |
| pmaddubsw | PMADDUBSW xmm1, xmm2/m128 | SSSE3 | SSSE3 | Multiplies signed/unsigned bytes and adds pairs to words. |
| pmaddwd | PMADDWD mm, mm/m64 | MMX | MMX | Multiplies words and adds adjacent pairs (MMX). |
| pmaddwd | PMADDWD xmm1, xmm2/m128 | SSE2 | SSE2 | Multiplies words, adds adjacent pairs to doublewords. |
| pmaxsb | PMAXSB xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns maximum of signed bytes. |
| pmaxsd | PMAXSD xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns maximum of signed doublewords. |
| pmaxsw | PMAXSW xmm1, xmm2/m128 | SSE2 | SSE2 | Returns maximum of signed words. |
| pmaxub | PMAXUB xmm1, xmm2/m128 | SSE2 | SSE2 | Returns maximum of unsigned bytes. |
| pmaxud | PMAXUD xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns maximum of unsigned doublewords. |
| pmaxuw | PMAXUW xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns maximum of unsigned words. |
| pminsb | PMINSB xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns minimum of signed bytes. |
| pminsd | PMINSD xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns minimum of signed doublewords. |
| pminsw | PMINSW xmm1, xmm2/m128 | SSE2 | SSE2 | Returns minimum of signed words. |
| pminub | PMINUB xmm1, xmm2/m128 | SSE2 | SSE2 | Returns minimum of unsigned bytes. |
| pminud | PMINUD xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns minimum of unsigned doublewords. |
| pminuw | PMINUW xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Returns minimum of unsigned words. |
| pmovmskb | PMOVMSKB r32, xmm | SSE2 | SSE2 | Creates a mask from the MSB of each byte in XMM. |
| pmovsxbq | PMOVSXBQ xmm1, xmm2/m16 | SSE4.1 | SSE4.1 | Sign extends 8-bit integers to 64-bit. |
| pmovsxbw | PMOVSXBW xmm1, xmm2/m64 | SSE4.1 | SSE4.1 | Sign extends 8-bit integers to 16-bit. |
| pmovsxdq | PMOVSXDQ xmm1, xmm2/m64 | SSE4.1 | SSE4.1 | Sign extends 32-bit integers to 64-bit. |
| pmovsxwd | PMOVSXWD xmm1, xmm2/m64 | SSE4.1 | SSE4.1 | Sign extends 16-bit integers to 32-bit. |
| pmovsxwq | PMOVSXWQ xmm1, xmm2/m32 | SSE4.1 | SSE4.1 | Sign extends 16-bit integers to 64-bit. |
| pmovzxbd | PMOVZXBD xmm1, xmm2/m32 | SSE4.1 | SSE4.1 | Zero extends 8-bit integers to 32-bit. |
| pmovzxbq | PMOVZXBQ xmm1, xmm2/m16 | SSE4.1 | SSE4.1 | Zero extends 8-bit integers to 64-bit. |
| pmovzxbw | PMOVZXBW xmm1, xmm2/m64 | SSE4.1 | SSE4.1 | Zero extends 8-bit integers to 16-bit. |
| pmovzxdq | PMOVZXDQ xmm1, xmm2/m64 | SSE4.1 | SSE4.1 | Zero extends 32-bit integers to 64-bit. |
| pmovzxwd | PMOVZXWD xmm1, xmm2/m64 | SSE4.1 | SSE4.1 | Zero extends 16-bit integers to 32-bit. |
| pmovzxwq | PMOVZXWQ xmm1, xmm2/m32 | SSE4.1 | SSE4.1 | Zero extends 16-bit integers to 64-bit. |
| pmulhrsw | PMULHRSW xmm1, xmm2/m128 | SSSE3 | SSSE3 | Multiplies signed 16-bit words, rounds, and scales. |
| pmulhuw | PMULHUW xmm1, xmm2/m128 | SSE2 | SSE2 | Multiplies unsigned words, keeps high 16 bits. |
| pmulhw | PMULHW mm, mm/m64 | MMX | MMX | Multiplies 4 signed words and stores high 16 bits (MMX). |
| pmulhw | PMULHW xmm1, xmm2/m128 | SSE2 | SSE2 | Multiplies signed words, keeps high 16 bits. |
| pmulld | PMULLD xmm1, xmm2/m128 | SSE4.1 | SSE4.1 | Multiplies 32-bit integers, stores low 32-bit result. |
| pmullw | PMULLW mm, mm/m64 | MMX | MMX | Multiplies 4 words and stores low 16 bits (MMX). |
| pmullw | PMULLW xmm1, xmm2/m128 | SSE2 | SSE2 | Multiplies 16-bit words and stores low 16-bit result. |
| pmuludq | PMULUDQ xmm1, xmm2/m128 | SSE2 | SSE2 | Multiplies low 32-bits of each 64-bit chunk to 64-bit result. |
| pop | POP r/m | Legacy | Base | Loads operand from stack and increments SP. |
| popa | POPA | Legacy | Base (32-bit only) | Pops into DI, SI, BP, SP, BX, DX, CX, AX (Invalid in 64-bit). |
| popcnt | POPCNT r, r/m | VEX | SSE4.2 | Counts number of bits set to 1. |
| popf | POPF | Legacy | Base | Pops stack into EFLAGS. |
| por | POR mm, mm/m64 | MMX | MMX | Bitwise OR of 64-bit MMX registers. |
| por | POR xmm, xmm/m128 | SSE2 | SSE2 | Bitwise OR of 128-bit integers. |
| prefetchnta | PREFETCHNTA m8 | SSE | SSE | Prefetches data to non-temporal cache structure (minimize pollution). |
| prefetcht0 | PREFETCHT0 m8 | SSE | SSE | Prefetches data to L1 cache. |
| prefetcht1 | PREFETCHT1 m8 | SSE | SSE | Hints to fetch data to L2 and L3 caches. |
| prefetcht2 | PREFETCHT2 m8 | SSE | SSE | Hints to fetch data to L3 cache only. |
| prefetchw | PREFETCHW m8 | Legacy | PREFETCHW | Prefetches data with intent to write (RFO). |
| prefetchwt1 | PREFETCHWT1 m8 | Legacy | PREFETCHWT1 | Prefetches data to L2 (T1 hint) with intent to write. |
| psadbw | PSADBW xmm1, xmm2/m128 | SSE2 | SSE2 | Computes absolute differences of bytes and sums them to words. |
| pshufb | PSHUFB xmm1, xmm2/m128 | SSSE3 | SSSE3 | Shuffles bytes according to indices in source operand. |
| pshufd | PSHUFD xmm, xmm/m128, imm8 | SSE2 | SSE2 | Shuffles 32-bit integers. |