This is the full 8086-8088 instruction set, but 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 chip.
Instruction |
Meaning |
Notes
|
AAA |
ASCII adjust AL after addition |
used with unpacked binary-coded decimal
|
AAD |
ASCII adjust AX before division |
buggy in the original instruction set, but "fixed" in the NEC V20, causing a number of incompatibilites
|
AAM |
ASCII adjust AX after multiplication |
|
AAS |
ASCII adjust AL after subtraction |
|
ADC |
Add with carry |
|
ADD |
Add |
|
AND |
Logical AND |
|
CALL |
Call procedure |
|
CBW |
Convert byte to word |
|
CLC |
Clear carry flag |
|
CLD |
Clear direction flag |
|
CLI |
Clear interrupt flag |
|
CMC |
Complement carry flag |
|
CMP |
Compare operands |
|
CMPSB |
Compare bytes in memory |
|
CMPSW |
Compare words |
|
CWD |
Convert word to doubleword |
|
DAA |
Decimal adjust AL after addition |
(used with packed binary coded decimal)
|
DAS |
Decimal adjust AL after subtraction |
|
DEC |
Decrement by 1 |
|
DIV |
Unsigned divide |
|
ESC |
Used with floating-point unit |
|
HLT |
Enter halt state |
|
IDIV |
Signed divide |
|
IMUL |
Signed multiply |
|
IN |
Input from port |
|
INC |
Increment by 1 |
|
INT |
Call to interrupt |
|
INTO |
Call to interrupt if overflow |
|
IRET |
Return from interrupt |
|
Jcc |
Jump if condition |
(JA, JAE, JB, JBE, JC, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ)
|
JMP |
Jump |
|
LAHF |
Load flags into AH register |
|
LDS |
Load pointer using DS |
|
LEA |
Load Effective Address |
|
LES |
Load ES with pointer |
|
LOCK |
Assert BUS LOCK# signal |
(for multiprocessing)
|
LODSB |
Load byte |
|
LODSW |
Load word |
|
LOOP/LOOPx |
Loop control |
(LOOPE, LOOPNE, LOOPNZ, LOOPZ)
|
MOV |
Move
|
MOVSB |
Move byte from string to string |
|
MOVSW |
Move word from string to string |
|
MUL |
Unsigned multiply |
|
NEG |
Two's complement negation |
|
NOP |
No operation |
|
NOT |
Negate the operand, logical NOT |
|
OR |
Logical OR |
|
OUT |
Output to port |
|
POP |
Pop data from stack |
|
POPF |
Pop data into flags register |
|
PUSH |
Push data onto stack |
|
PUSHF |
Push flags onto stack |
|
RCL |
Rotate left (with carry) |
|
RCR |
Rotate right (with carry) |
|
REPxx |
Repeat CMPS/MOVS/SCAS/STOS |
(REP, REPE, REPNE, REPNZ, REPZ)
|
RET |
Return from procedure |
|
RETN |
Return from near procedure |
|
RETF |
Return from far procedure |
|
ROL |
Rotate left |
|
ROR |
Rotate right |
|
SAHF |
Store AH into flags |
|
SAL |
Shift Arithmetically left (multiply) |
|
SAR |
Shift Arithmetically right (signed divide) |
|
SBB |
Subtraction with borrow |
|
SCASB |
Compare byte string |
|
SCASW |
Compare word string |
|
SHL |
Shift left (multiply) |
|
SHR |
Shift right (unsigned divide) |
|
STC |
Set carry flag |
|
STD |
Set direction flag |
|
STI |
Set interrupt flag |
|
STOSB |
Store byte in string |
|
STOSW |
Store word in string |
|
SUB |
Subtraction |
|
TEST |
Logical compare (AND) |
|
WAIT |
Wait until not busy |
Waits until BUSY# pin is inactive (used with floating-point unit)
|
XCHG |
Exchange data |
|
XLAT |
Table look-up translation |
|
XOR |
Exclusive OR |
|
Instruction |
Meaning |
Notes
|
BSF |
Bit scan forward on r/m
|
BSR |
Bit scan reverse on r/m
|
BT |
Bit Test, Store selected bit in CF flag
|
BTC |
Store selected bit in CF flag and complement
|
BTR |
Store selected bit in CF flag and clear
|
BTS |
Store selected bit in CF flag and set
|
CDQ |
EDX:EAX <- sign-extend of EAX
|
CMPSD |
Compares doubleword at address DS:(E)SI with doubleword at address ES:(E)DI and sets the status flags accordingly
|
CWDE |
EAX <- sign-extend of AX
|
INSD
|
IRETD |
Interrupt return (32-bit operand size)
|
IRETDF
|
IRETF
|
JECXZ |
Jump short if ECX register is 0
|
LFS |
Load FS:r16 or FS:r32 with far pointer from memory
|
LGS |
Load GS:r16 or GS:r32 with far pointer from memory
|
LSS |
Load SS:r16 or SS:r32 with far pointer from memory
|
LODSD |
Load doubleword at address DS:(E)SI into EAX
|
LOOPD
|
LOOPED
|
LOOPNED
|
LOOPNZD
|
LOOPZD
|
MOVSD
|
MOVSX |
Move with Sign-Extension
|
MOVZX |
Move with Zero-Extend
|
OUTSD |
Output doubleword from memory location specified in DS:(E)SI to I/O port specified in DX
|
POPAD |
Pop EDI, ESI, EBP, EBX, EDX, ECX, and EAX
|
POPFD |
Pop top of stack into EFLAGS
|
PUSHAD |
Push EAX, ECX, EDX, EBX, original ESP, EBP, ESI, and EDI
|
PUSHD
|
PUSHFD
|
SCASD |
Compare EAX with doubleword at ES:(E)DI and set status flags
|
SETcc |
Conditionally set byte.
|
SHLD |
Double Precision Shift Left
|
SHRD |
Double Precision Shift Right
|
STOSD |
Store EAX at address ES:(E)DI
|
VMX is intended to support virtualization of processor hardware and a system software layer acting as a host to multiple guest software environments. The virtual-machine extensions (VMX) includes five instructions that manage the virtual-machine control structure (VMCS) and five instruction that manage VMX operation. Additional details of VMX are described in IA-32 Intel Architecture Software Developer’s Manual, Volume 3B.
Instruction |
Meaning |
Notes
|
VMPTRLD |
This instruction takes a single 64-bit source operand that is in memory. It makes the referenced VMCS active and current, loading the current-VMCS pointer with this operand and establishes the current VMCS based on the contents of VMCS-data area in the referenced VMCS region.
|
VMPTRST |
This instruction takes a single 64-bit destination operand that is in memory. The current-VMCS pointer is stored into the destination operand.
|
VMCLEAR |
This instruction takes a single 64-bit operand that is in memory. The instruction sets the launch state of the VMCS referenced by the operand to “clear”, renders that VMCS inactive, and ensures that data for the VMCS have been written to the VMCSdata area in the referenced VMCS region.
|
VMREAD |
This instruction reads a component from the VMCS (the encoding of that field is given in a register operand) and stores it into a destination operand that may be a register or in memory.
|
VMWRITE |
This instruction writes a component to the VMCS (the encoding of that field is given in a register operand) from a source operand that may be a register or in memory
|
VMCALL |
This instruction allows a guest in VMX non-root operation to call the VMM for service. A VM exit occurs, transferring control to the VMM.
|
VMLAUNCH |
This instruction launches a virtual machine managed by the VMCS. A VM entry occurs, transferring control to the VM.
|
VMRESUME |
This instruction resumes a virtual machine managed by the VMCS. A VM entry occurs, transferring control to the VM.
|
VMXOFF |
This instruction causes the processor to leave VMX operation.
|
VMXON |
This instruction takes a single 64-bit source operand that is in memory. It causes a logical processor to enter VMX root operation and to use the memory referenced by the operand to support VMX operation.
|
Instruction |
Meaning |
Notes
|
F2XM1 |
Replace ST(0) with (2 * ST(0) - 1)
|
FABS |
Replace ST with its absolute value.
|
FADD |
Add m to ST or add ST to ST(i) or ST(i) to ST
|
FADDP |
Add m to ST or add ST to ST(i) or ST(i) to ST, pop the stack.
|
FBLD |
Convert BCD value to real and push onto the FPU stack.
|
FBSTP |
Store ST(0) in m80bcd and pop ST(0).
|
FCHS |
Complements sign of ST(0)
|
FCLEX |
Clear floating-point exception flags after checking for pending unmasked floating-point exceptions.
|
FCOM |
Compare ST(0) with m or ST(i)
|
FCOMP |
Compare ST(0) with m or ST(i), pop the stack.
|
FCOMPP |
Compare ST(0) with ST(1) and pop register stack twice.
|
FDECSTP |
Decrement TOP field in FPU status word.
|
FDISI |
Sets the interrupt enable mask in the control word.
|
FDIV |
Divide ST(0) by m and store result in ST(0), Divide ST(0) by ST(i) and store result in ST(0), Divide ST(i) by ST(0) and store result in ST(i)
|
FDIVP |
Divide ST(i) by ST(0), store result in ST(i), and pop the register stack, Divide ST(1) by ST(0), store result in ST(1), and pop the register stack.
|
FDIVR |
Reverse Divide
|
FDIVRP |
Divide ST(0) by ST(i), store result in ST(i), and pop the register stack
|
FENI |
Sets tag for ST(i) to empty.
|
FFREE |
Sets tag for ST(i) to empty.
|
FIADD |
Integer add m to ST(0) and store result in ST(0).
|
FICOM |
Integer compare ST(0) with m.
|
FICOMP |
Integer compare ST(0) with m, pop stack .
|
FIDIV |
Integer divide ST(0) by m and store result in ST(0)
|
FIDIVR |
Integer divide m by ST(0) and store result in ST(0)
|
FILD |
Integer push m onto the FPU register stack.
|
FIMUL |
Integer multiply ST(0) by m and store result in ST(0)
|
FINCSTP |
Increment the TOP field in the FPU status register
|
FINIT |
Initialize FPU after checking for pending unmasked floating-point exceptions.
|
FIST |
Integer store ST(0) in m.
|
FISTP |
Integer store ST(0) in m, pop the stack.
|
FISUB |
Integer subtract m from ST(0) and store result in ST(0)
|
FISUBR |
Integer subtract ST(0) from m and store result in ST(0)
|
FLD |
Push m or ST(i) onto the FPU register stack.
|
FLD1 |
Push +1.0 onto the FPU register stack.
|
FLDCW |
Load FPU control word from m2byte.
|
FLDENV |
Load FPU environment from m14byte or m28byte.
|
FLDENVW
|
FLDL2E |
Push log2</sup>e onto the FPU register stack.
|
FLDL2T |
Push log210 onto the FPU register stack.
|
FLDLG2 |
Push log102 onto the FPU register stack.
|
FLDLN2 |
Push loge2 onto the FPU register stack.
|
FLDPI |
Push p onto the FPU register stack.
|
FLDZ |
Push +0.0 onto the FPU register stack.
|
FMUL |
Multiply ST(0) by m or ST(i) and store result in ST(0),
|
FMULP |
Multiply ST(0) by m or ST(i) and store result in ST(0), pop the stack,
|
FNCLEX |
Clear floating-point exception flags without checking for pending unmasked floating-point exceptions.
|
FNDISI |
Sets the interrupt enable mask in the control word.
|
FNENI |
Clears the interrupt enable mask in the control word.
|
FNINIT |
Initialize FPU without checking for pending unmasked floating-point exceptions.
|
FNOP |
No operation is performed.
|
FNSAVE |
Store FPU environment to m94byte or m108byte without checking for pending unmasked floating-point exceptions. Then re-initialize the FPU.
|
FNSAVEW
|
FNSTCW |
Store FPU control word to m2byte without checking for pending unmasked floating-point exceptions.
|
FNSTENV |
Store FPU environment to m14byte or m28byte without checking for pending unmasked floating-point exceptions. Then mask all floating-point exceptions.
|
FNSTENVW
|
FNSTSW |
Store FPU status word at m2byte or in AX without checking for pending unmasked floating-point exceptions.
|
FPATAN |
Replace ST(1) with arctan(ST(1)/ST(0)) and pop the register stack
|
FPREM |
Replace ST(0) with the remainder obtained from dividing ST(0) by ST(1)
|
FPTAN |
Replace ST(0) with its tangent and push 1 onto the FPU stack.
|
FRNDINT |
Round ST(0) to an integer.
|
FRSTOR |
Load FPU state from m94byte or m108byte.
|
FRSTORW
|
FSAVE |
Store FPU state to m94byte or m108byte after checking for pending unmasked floating-point exceptions. Then re-initialize the FPU.
|
FSAVEW
|
FSCALE |
Scale ST(0) by ST(1).
|
FSQRT |
Computes square root of ST(0) and stores the result in ST(0)
|
FST |
Copy ST(0) to m or ST(i)
|
FSTCW |
Store FPU control word to m2byte after checking for pending unmasked floating-point exceptions.
|
FSTENV |
Store FPU environment to m14byte or m28byte after checking for pending unmasked floating-point exceptions. Then mask all floating-point exceptions.
|
FSTENVW
|
FSTP |
Copy ST(0) to m or ST(i) and pop register stack.
|
FSTSW |
Store FPU status word at m2byte or in AX after checking for pending unmasked floating-point exceptions.
|
FSUB |
Subtract m from ST(0) and store result in ST(0) or Subtract ST(i) from ST(0) and store result in ST(0) or Subtract ST(0) from ST(i) and store result in ST(i)
|
FSUBP |
Subtract ST(0) from ST(i), store result in ST(i), and pop register stack
|
FSUBR |
Subtract ST(0) from m32real or ST(i) and store result in ST(0) or Subtract ST(i) from ST(0) and store result in ST(i)
|
FSUBRP |
Subtract ST(i) from ST(0), store result in ST(i), and pop register stack
|
FTST |
Compare ST(0) with 0.0.
|
FWAIT |
Check pending unmasked floating-point exceptions.
|
FXAM |
Classify value or number in ST(0)
|
FXCH |
Exchange the contents of ST(0) and ST(i)
|
FXTRACT |
Separate value in ST(0) into exponent and significand, store exponent in ST(0), and push the significand onto the register stack.
|
FYL2X |
Replace ST(1) with (ST(1) * log2ST(0)) and pop the register stack
|
FYL2XP1 |
Replace ST(1) with ST(1) * log 2 (ST(0) + 1.0) and pop the register stack
|
Instruction |
Meaning |
Notes
|
FCOS |
Replace ST(0) with its cosine
|
FLDENVD |
Load FPU environment from m28byte.
|
FNSAVED |
Store FPU environment to m94byte or m108byte without checking for pending unmasked floating-point exceptions. Then re-initialize the FPU.
|
FNSTENVD |
Store FPU environment to m14byte or m28byte without checking for pending unmasked floating-point exceptions. Then mask all floating-point exceptions.
|
FPREM1 |
Replace ST(0) with the IEEE remainder obtained from dividing ST(0) by ST(1)
|
FRSTORD |
Load FPU state from m94byte or m108byte.
|
FSAVED |
Store FPU state to m94byte or m108byte after checking for pending unmasked floating-point exceptions. Then re-initialize the FPU.
|
FSIN |
Replace ST(0) with its sine.
|
FSINCOS |
Compute the sine and cosine of ST(0); replace ST(0) with the sine, and push the cosine onto the register stack.
|
FSTENVD |
Store FPU environment to m14byte or m28byte after checking for pending unmasked floating-point exceptions. Then mask all floating-point exceptions.
|
FUCOM |
Performs an unordered comparison of the contents of register ST(0) and ST(i) and sets condition code flags C0, C2, and C3 in the FPU status word according to the results.
|
FUCOMP |
Performs an unordered comparison of the contents of register ST(0) and ST(i) and sets condition code flags C0, C2, and C3 in the FPU status word according to the results and pops the stack.
|
FUCOMPP |
Performs an unordered comparison of the contents of register ST(0) and ST(i) and sets condition code flags C0, C2, and C3 in the FPU status word according to the results and pops the stack twice.
|
Instruction |
Meaning |
Notes
|
EMMS |
Empty MMX state |
This instruction must be executed before executing floating-point instructions.
|
MOVD |
Move doubleword
|
MOVQ |
Move quadword
|
PACKSSDW |
Pack doublewords into words (signed with saturation)
|
PACKSSWB |
Pack words into bytes (signed with saturation)
|
PACKUSWB |
Pack words into bytes (unsigned with saturation)
|
PADDB |
Add with wrap-around on byte
|
PADDD |
Add with wrap-around on doubleword
|
PADDSB |
Add signed with saturation on byte
|
PADDSW |
Add signed with saturation on word
|
PADDUSB |
Add unsigned with saturation on byte
|
PADDUSW |
Add unsigned with saturation on word
|
PADDW |
Add with wrap-around on word
|
PAND |
Bitwise AND
|
PANDN |
Bitwise AND NOT
|
PCMPEQB |
Packed compare for equality byte
|
PCMPEQD |
Packed compare for equality double word
|
PCMPEQW |
Packed compare for equality word
|
PCMPGTB |
Packed compare greater than byte
|
PCMPGTD |
Packed compare greater than double word
|
PCMPGTW |
Packed compare greater than word
|
PMADDWD |
Packed multiply on words and add resulting pairs
|
PMULHW |
Packed multiply high on words
|
PMULLW |
Packed multiply low on words
|
POR |
Bitwise OR
|
PSLLD |
Packed shift left logical doubleword by amount specified in MMX register or by immediate value
|
PSLLQ |
Packed shift left logical quadword by amount specified in MMX register or by immediate value
|
PSLLW |
Packed shift left logical word by amount specified in MMX register or by immediate value
|
PSRAD |
Packed shift right arithmetic doubleword by amount specified in MMX register or by immediate value
|
PSRAW |
Packed shift right arithmetic word by amount specified in MMX register or by immediate value
|
PSRLD |
Packed shift right logical doubleword by amount specified in MMX register or by immediate value
|
PSRLQ |
Packed shift right logical quadword by amount specified in MMX register or by immediate value
|
PSRLW |
Packed shift right logical word by amount specified in MMX register or by immediate value
|
PSUBB |
Subtract with wrap-around on byte
|
PSUBD |
Subtract with wrap-around on doubleword
|
PSUBSB |
Subtract signed with saturation on byte
|
PSUBSW |
Subtract signed with saturation on word
|
PSUBUSB |
Subtract unsigned with saturation on byte
|
PSUBUSW |
Subtract unsigned with saturation on word
|
PSUBW |
Subtract with wrap-around on word
|
PUNPCKHBW |
Unpack (interleave) high-order bytes from MMX register
|
PUNPCKHDQ |
Unpack (interleave) high-order doublewords from MMX register
|
PUNPCKHWD |
Unpack (interleave) high-order words from MMX register
|
PUNPCKLBW |
Unpack (interleave) low-order bytes from MMX register
|
PUNPCKLDQ |
Unpack (interleave) low-order doublewords from MMX register
|
PUNPCKLWD |
Unpack (interleave) low-order words from MMX register
|
PXOR |
Bitwise EOR
|
Instruction |
Meaning |
Notes
|
FEMMS |
Faster Enter/Exit of the MMX or floating-point state.
|
PAVGUSB |
Average of unsigned packed 8-bit values.
|
PF2ID |
Converts packed floating-point operand to packed 32-bit integer.
|
PFACC |
Floating-point accumulate.
|
PFADD |
Packed, floating-point addition.
|
PFCMPEQ |
Packed floating-point comparison, equal to.
|
PFCMPGE |
Packed floating-point comparison, greater than or equal to.
|
PFCMPGT |
Packed floating-point comparison, greater than.
|
PFMAX |
Packed floating-point maximum.
|
PFMIN |
Packed floating-point minimum.
|
PFMUL |
Packed floating-point multiplication.
|
PFRCP |
Floating-point reciprocal approximation.
|
PFRCPIT1 |
Packed floating-point reciprocal, first iteration step.
|
PFRCPIT2 |
Packed floating-point reciprocal/reciprocal square root, second iteration step.
|
PFRSQIT1 |
Packed floating-point reciprocal square root, first iteration step.
|
PFRSQRT |
Floating-point reciprocal square root approximation.
|
PFSUB |
Packed floating-point subtraction.
|
PFSUBR |
Packed floating-point reverse subtraction.
|
PI2FD |
Packed 32-bit integer to floating-point conversion.
|
PMULHRW |
Multiply signed packed 16-bit values with rounding and store the high 16 bits.
|
PREFETCH |
Prefetch processor cache line into L1 data cache (Dcache).
|
PREFETCHW |
Prefetch processor cache line into L1 data cache (Dcache).
|
Instruction |
Meaning |
Notes
|
ADDPS |
Add packed single-precision floating-point values from xmm2/m128 to xmm1.
|
ADDSS |
Add the low single-precision floating-point value from xmm2/m32 to xmm1.
|
ANDNPS |
Bitwise logical AND NOT of xmm2/m128 and xmm1.
|
ANDPS |
Bitwise logical AND of xmm2/m128 and xmm1.
|
CMPPS |
Compare packed single-precision floating-point values from xmm2/mem with packed single-precision floating-point values in xmm1 register using imm8 as comparison predicate.
|
CMPSS |
Compare low single-precision floating-point value from xmm2/m32 with low single-precision floating-point value in xmm1 register using imm8 as comparison predicate.
|
COMISS |
Compare low single-precision floating-point values in xmm1 and xmm2/mem32 and set the EFLAGS flags accordingly.
|
CVTPI2PS |
Convert two signed doubleword integers from mm/m64 to two single-precision floating-point values in xmm..
|
CVTPS2PI |
Convert two single-precision floating-point values from xmm/m64 to two signed doubleword signed integers in mm.
|
CVTSI2SS |
Convert one signed doubleword integer from r/m32 to one single-precision floating-point number in xmm.
|
CVTSS2SI |
Convert one single-precision floating-point number from xmm/m32 to one signed doubleword integer in r32.
|
CVTTPS2PI |
Convert two single-precision floating-point values from xmm/m64 to two signed doubleword signed integers in mm using truncation.
|
CVTTSS2SI |
Convert one single-precision floating-point number from xmm/m32 to one signed doubleword integer r32 using truncation.
|
DIVPS |
Divide packed single-precision floating-point values in xmm1 by packed single-precision floating-point values xmm2/m128.
|
DIVSS |
Divide low single-precision floating-point value in xmm1 by low single-precision floating-point value in xmm2/m32
|
LDMXCSR |
Load Streaming SIMD Extension control/status word from m32.
|
MAXPS |
Return the maximum single-precision floating-point values between xmm2/m128 and xmm1.
|
MAXSS |
Return the maximum scalar single-precision floating-point value between xmm2/mem32 and xmm1.
|
MINPS |
Return the minimum single-precision floating-point values between xmm2/m128 and xmm1.
|
MINSS |
Return the minimum scalar single-precision floating-point value between xmm2/mem32 and xmm1.
|
MOVAPS |
Move packed single-precision floating-point numbers from/to xmm2/m128 to/from xmm1.
|
MOVHLPS |
Move two packed single-precision floating-point values from high quadword of xmm2 to low quadword of xmm1.
|
MOVHPS |
Move two packed single-precision floating-point values from/to m64 to/from high quadword of xmm.
|
MOVLHPS |
Move two packed single-precision floating-point values from low quadword of xmm2 to high quadword of xmm1.
|
MOVLPS |
Move two packed single-precision floating-point values from/to m64 to/from low quadword of xmm.
|
MOVMSKPS |
Extract 4-bit sign mask of from xmm and store in r32.
|
MOVNTPS |
Move packed single-precision floating-point values from xmm to m128, minimizing pollution in the cache hierarchy.
|
MOVSS |
Move scalar single-precision floating-point value from/to xmm2/m64 to/from xmm1 register.
|
MOVUPS |
Move packed single-precision floating-point numbers from/to xmm2/m128 to/from xmm1.
|
MULPS |
Multiply packed single-precision floating-point values in xmm2/mem by xmm1.
|
MULSS |
Multiply the low single-precision floating-point value in xmm2/mem by the low single-precision floating-point value in xmm1.
|
ORPS |
Bitwise OR of xmm2/m128 and xmm1
|
RCPPS |
Returns to xmm1 the packed approximations of the reciprocals of the packed single-precision floating-point values in xmm2/m128.
|
RCPSS |
Returns to xmm1 the packed approximation of the reciprocal of the low single-precision floating-point value in xmm2/m32.
|
RSQRTPS |
Returns to xmm1 the packed approximations of the reciprocals of the square roots of the packed single-precision floating-point values in xmm2/m128.
|
RSQRTSS |
Returns to xmm1 an approximation of the reciprocal of the square root of the low single-precision floating-point value in xmm2/m32.
|
SHUFPS |
Shuffle packed single-precision floating-point values selected by imm8 from xmm1 and xmm1/m128 to xmm1.
|
SQRTPS |
Computes square roots of the packed single-precision floating-point values in xmm2/m128 and stores the results in xmm1.
|
SQRTSS |
Computes square root of the low single-precision floating-point value in xmm2/m32 and stores the results in xmm1.
|
STMXCSR |
Store Multimedia Extended Control Status Register.
|
SUBPS |
Subtract packed single-precision floating-point values in xmm2/mem from xmm1.
|
SUBSS |
Subtract the lower single-precision floating-point numbers in xmm2/m32 from xmm1.
|
UCOMISS |
Compare lower single-precision floating-point number in xmm1 register with lower single-precision floating-point number in xmm2/mem and set the status flags accordingly.
|
UNPCKHPS |
Interleaves single-precision floating-point values from the high quadwords of xmm1 and xmm2/mem into xmm1.
|
UNPCKLPS |
Interleaves single-precision floating-point values from the low quadwords of xmm1 and xmm2/mem into xmm1.
|
XORPS |
Bitwise exclusive-OR of xmm2/m128 and xmm1.
|
Instruction |
Meaning |
Notes
|
ADDPD |
Add packed double-precision floating-point values from xmm2/m128 to xmm1.
|
ADDSD |
Add the low double-precision floating-point value from xmm2/m64 to xmm1.
|
ANDNPD |
Bitwise logical AND NOT of xmm2/m128 and xmm1.
|
ANDPD |
Bitwise logical AND of xmm2/m128 and xmm1.
|
CMPPD |
Compare packed double-precision floating-point numbers from xmm2/m128 with packed double-precision floating-point numbers in xmm1, using imm8 as comparison predicate.
|
CMPSD* |
Compare low double-precision floating-point value from xmm2/m64 with low double-precision floating-point value in xmm1 register using imm8 as comparison predicate.
|
COMISD |
Compare low double-precision floating-point values in xmm1 and xmm2/mem64 and set the EFLAGS flags accordingly.
|
CVTDQ2PD |
Convert two packed signed doubleword integers from xmm2/m128 to two packed double-precision floating-point values in xmm1.
|
CVTDQ2PS |
Convert four packed signed doubleword integers from xmm2/m128 to four packed single-precision floating-point values in xmm1.
|
CVTPD2DQ |
Convert two packed double-precision floating-point values from xmm2/m128 to two packed signed doubleword integers in xmm1.
|
CVTPD2PI |
Convert two packer double-precision floating-point numbers from xmm/m128 to two packed signed doubleword integers in mm.
|
CVTPD2PS |
Convert two double-precision floating-point values in xmm2/m128 to two single-precision floating-point values in xmm1.
|
CVTPI2PD |
Convert two signed doubleword integers from mm/mem64 to two double-precision floating-point values in xmm.
|
CVTPS2DQ |
Convert four packed single-precision floating-point values from xmm2/m128 to four packed signed doubleword integers in xmm1.
|
CVTPS2PD |
Convert two packed single-precision floating-point values in xmm2/m64 to two packed double-precision floating-point values in xmm1.
|
CVTSD2SI |
Convert one double-precision floating-point number from xmm/m64 to one signed doubleword integer r32.
|
CVTSD2SS |
Convert one double-precision floating-point value in xmm2/m64 to one single-precision floating-point value in xmm1.
|
CVTSI2SD |
Convert one signed doubleword integer from r/m32 to one double-precision floating-point value in xmm.
|
CVTSS2SD |
Convert one single-precision floating-point value in xmm2/m32 to one double-precision floating-point value in xmm1.
|
CVTTPD2DQ |
Convert two packed double-precision floating-point values from xmm2/m128 to two packed signed doubleword integers in xmm1 using truncation.
|
CVTTPD2PI |
Convert two packer double-precision floating-point numbers from xmm/m128 to two packed signed doubleword integers in mm using truncation.
|
CVTPS2DQ |
Convert four packed single-precision floating-point values from xmm2/m128 to four packed signed doubleword integers in xmm1.
|
CVTTSD2SI |
Convert one double-precision floating-point number from xmm/m64 to one signed doubleword integer r32 using truncation.
|
DIVPD |
Divide packed double-precision floating-point values in xmm1 by packed double-precision floating-point values xmm2/m128.
|
DIVSD |
Divide low double-precision floating-point value n xmm1 by low double-precision floating-point value in xmm2/mem64.
|
MAXPD |
Return the maximum double-precision floating-point values between xmm2/m128 and xmm1.
|
MAXSD |
Return the maximum scalar double-precision floating-point value between xmm2/mem64 and xmm1.
|
MINPD |
Return the minimum double-precision floating-point values between xmm2/m128 and xmm1.
|
MINSD |
Return the minimum scalar double-precision floating-point value between xmm2/mem64 and xmm1.
|
MOVAPD |
Move Aligned Packed Double-Precision Floating-Point Values.
|
MOVHPD |
Move High Packed Double-Precision Floating-Point Value.
|
MOVLPD |
Move Low Packed Double-Precision Floating-Point Value.
|
MOVMSKPD |
Extract 2-bit sign mask of from xmm and store in r32.
|
MOVSD* |
Move Scalar Double-Precision Floating-Point Value
|
MOVUPD |
Move Unaligned Packed Double-Precision Floating-Point Values.
|
MULPD |
Multiply packed double-precision floating-point values in xmm2/m128 by xmm1.
|
MULSD |
Multiply the low double-precision floating-point value in xmm2/mem64 by low double-precision floating-point value in xmm1.
|
ORPD |
Bitwise OR of xmm2/m128 and xmm1.
|
SHUFPD |
Shuffle packed double-precision floating-point values selected by imm8 from xmm1 and xmm1/m128 to xmm1.
|
SQRTPD |
Computes square roots of the packed double-precision floating-point values in xmm2/m128 and stores the results in xmm1.
|
SQRTSD |
Computes square root of the low double-precision floating-point value in xmm2/m64 and stores the results in xmm1.
|
SUBPD |
Subtract packed double-precision floating-point values in xmm2/m128 from xmm1.
|
SUBSD |
Subtracts the low double-precision floating-point numbers in xmm2/mem64 from xmm1.
|
UCOMISD |
Compares (unordered) the low double-precision floating-point values in xmm1 and xmm2/m64 and set the EFLAGS accordingly.
|
UNPCKHPD |
Interleaves double-precision floating-point values from the high quadwords of xmm1 and xmm2/m128.
|
UNPCKLPD |
Interleaves double-precision floating-point values from the low quadwords of xmm1 and xmm2/m128.
|
XORPD |
Bitwise exclusive-OR of xmm2/m128 and xmm1
|