The x86 instruction set refers to the set of instructions that x86-compatible microprocessors support. The instructions are usually part of an executable program, often stored as a computer file and executed on the processor.
Contents
- x86 integer instructions
- Added with Pentium MMX
- Added with AMD K6
- Added with ABM
- Added with BMI1
- Added with BMI2
- Added with TBM
- Added with Pentium Pro
- Added with SSE
- Added with SSE3
- Undocumented x87 instructions
- Added with Athlon
- EMMI instructions
- Added with K6 2
- Added with Athlon and K6 2
- Added with Geode GX
- SSE instructions
- SSE SIMD floating point instructions
- SSE SIMD integer instructions
- SSE2 instructions
- SSE2 SIMD floating point instructions
- SSE3 instructions
- SSE3 SIMD floating point instructions
- SSE3 SIMD integer instructions
- SSSE3 instructions
- SSE41
- SSE41 SIMD floating point instructions
- SSE41 SIMD integer instructions
- SSE4a
- SSE42
- Intel AES instructions
- Intel SHA instructions
- Undocumented instructions
- References
The x86 instruction set has been extended several times, introducing wider registers and datatypes as well as new functionality.
x86 integer instructions
This is the full 8086/8088 instruction set. Most if not all of these instructions are available in 32-bit mode; they just operate on 32-bit registers (eax, ebx, etc.) and values instead of their 16-bit (ax, bx, etc.) counterparts. See also x86 assembly language for a quick tutorial for this processor family. The updated instruction set is also grouped according to architecture (i386, i486, i686) and more generally is referred to as x86_32 and x86_64 (also known as AMD64).
Added with Pentium MMX
Also MMX registers and MMX support instructions were added. They are usable for both integer and floating point operations, see below.
Added with AMD K6
AMD changed the CPUID detection bit for this feature from the K6-II on.
Added with ABM
LZCNT, POPCNT (POPulation CouNT) - advanced bit manipulation
Added with BMI1
ANDN, BEXTR, BLSI, BLSMSK, BLSR, TZCNT
Added with BMI2
BZHI, MULX, PDEP, PEXT, RORX, SARX, SHRX, SHLX
Added with TBM
BEXTR, BLCFILL, BLCI, BLCIC, BLCMASK, BLCS, BLSFILL, BLSIC, T1MSKC, TZMSK
Added with Pentium Pro
Added with SSE
FXRSTOR, FXSAVE
These are also supported on later Pentium IIs which do not contain SSE support
Added with SSE3
FISTTP (x87 to integer conversion with truncation regardless of status word)
Undocumented x87 instructions
FFREEP performs FFREE ST(i) and pop stack
Added with Athlon
Same as the SSE SIMD integer instructions which operated on MMX registers.
EMMI instructions
(added with 6x86MX from Cyrix, deprecated now)PAVEB, PADDSIW, PMAGW, PDISTIB, PSUBSIW, PMVZB, PMULHRW, PMVNZB, PMVLZB, PMVGEZB, PMULHRIW, PMACHRIW
Added with K6-2
FEMMS, PAVGUSB, PF2ID, PFACC, PFADD, PFCMPEQ, PFCMPGE, PFCMPGT, PFMAX, PFMIN, PFMUL, PFRCP, PFRCPIT1, PFRCPIT2, PFRSQIT1, PFRSQRT, PFSUB, PFSUBR, PI2FD, PMULHRW, PREFETCH, PREFETCHW
Added with Athlon and K6-2+
PF2IW, PFNACC, PFPNACC, PI2FW, PSWAPD
Added with Geode GX
PFRSQRTV, PFRCPV
SSE instructions
Added with Pentium III
SSE SIMD floating-point instructions
ADDPS, ADDSS, CMPPS, CMPSS, COMISS, CVTPI2PS, CVTPS2PI, CVTSI2SS, CVTSS2SI, CVTTPS2PI, CVTTSS2SI, DIVPS, DIVSS, LDMXCSR, MAXPS, MAXSS, MINPS, MINSS, MOVAPS, MOVHLPS, MOVHPS, MOVLHPS, MOVLPS, MOVMSKPS, MOVNTPS, MOVSS, MOVUPS, MULPS, MULSS, RCPPS, RCPSS, RSQRTPS, RSQRTSS, SHUFPS, SQRTPS, SQRTSS, STMXCSR, SUBPS, SUBSS, UCOMISS, UNPCKHPS, UNPCKLPS
SSE SIMD integer instructions
ANDNPS, ANDPS, ORPS, PAVGB, PAVGW, PEXTRW, PINSRW, PMAXSW, PMAXUB, PMINSW, PMINUB, PMOVMSKB, PMULHUW, PSADBW, PSHUFW, XORPS
SSE2 instructions
Added with Pentium 4
SSE2 SIMD floating-point instructions
SSE2 data movement instructions
SSE2 packed arithmetic instructions
SSE2 logical instructions
SSE2 compare instructions
SSE2 shuffle and unpack instructions
SSE2 conversion instructions
SSE3 instructions
Added with Pentium 4 supporting SSE3 Also see integer and floating-point instructions added with Pentium 4 SSE3
SSE3 SIMD floating-point instructions
SSE3 SIMD integer instructions
SSSE3 instructions
Added with Xeon 5100 series and initial Core 2
SSE4.1
Added with Core 2 manufactured in 45nm
SSE4.1 SIMD floating-point instructions
SSE4.1 SIMD integer instructions
SSE4a
Added with Phenom processors
SSE4.2
Added with Nehalem processors
Intel AES instructions
6 new instructions.
Intel SHA instructions
7 new instructions.
Undocumented instructions
The x86 CPUs contain undocumented instructions which are implemented on the chips but not listed in some official documents. They can be found in various sources across the Internet, such as Ralf Brown's Interrupt List and at sandpile.org