CIS-261 Home http://www.c-jump.com/bcc/

Intel Volume 2: Instruction Set Reference


  1. TABLE OF CONTENTS
  2. TABLE OF FIGURES
  3. TABLE OF TABLES

  4. CHAPTER 1. ABOUT THIS MANUAL

  5. 1.4.2.Reserved Bits and Software Compatibility
  6. 1.4.3.Instruction Operands
  7. 1.4.4.Hexadecimal and Binary Numbers
  8. 1.4.5.Segmented Addressing
  9. 1.5.RELATED LITERATURE

  10. CHAPTER 2. INSTRUCTION FORMAT

  11. INSTRUCTION PREFIX F0H-LOCK prefix
  12. INSTRUCTION PREFIX F2H-REPNE/REPNZ prefix (used only with string instructions)
  13. INSTRUCTION PREFIX F3H-REP prefix (used only with string instructions)
  14. INSTRUCTION PREFIX F3H-REPE/REPZ prefix (used only with string instructions)
  15. INSTRUCTION PREFIX F3H-Streaming SIMD Extensions prefix
  16. 2.5. DISPLACEMENT AND IMMEDIATE BYTES
  17. 2.6. ADDRESSING-MODE ENCODING OF MODR/M AND SIB BYTES
  18. 16-Bit Addressing Forms with the ModR/M Byte
  19. Effective Address
  20. Mod R/M
  21. Value of ModR/M Byte (in Hexadecimal)
  22. 32-Bit Addressing Forms with the ModR/M Byte
  23. 32-Bit Addressing Forms with the SIB Byte
  24. Instruction Set Reference

  25. CHAPTER 3. INSTRUCTION SET REFERENCE

  26. INTERPRETING THE INSTRUCTION REFERENCE PAGES
  27. Instruction Format
  28. Example: CMC - Complement Carry Flag
  29. 3.1.1.1.OPCODE COLUMN
  30. 3.1.1.2.INSTRUCTION COLUMN
  31. 3.1.1.3.DESCRIPTION COLUMN
  32. 3.1.2.Operation
  33. 3.1.3.Intel C/C++ Compiler Intrinsics Equivalent
  34. 3.1.3.2.MMX TECHNOLOGY INTRINSICS
  35. 3.1.3.3.SIMD FLOATING-POINT INTRINSICS
  36. 3.1.4.Flags Affected
  37. 3.1.5.FPU Flags Affected
  38. 3.1.6.Protected Mode Exceptions
  39. 3.1.7.Real-Address Mode Exceptions
  40. Exception Mnemonics, Names, and Vector Numbers
  41. 3.1.8.Virtual-8086 Mode Exceptions
  42. 3.1.9.Floating-Point Exceptions
  43. 3.1.10.SIMD Floating-Point Exceptions - Streaming SIMD
  44. SIMD Floating - Point Exception Mnemonics and Names
  45. 3.2.INSTRUCTION REFERENCE
  46. AAA-ASCII Adjust After Addition
  47. AAD-ASCII Adjust AX Before Division
  48. AAM-ASCII Adjust AX After Multiply
  49. AAS-ASCII Adjust AL After Subtraction
  50. ADC-Add with Carry
  51. ADD-Add
  52. ADDPS-Packed Single-FP Add
  53. ADDSS-Scalar Single-FP Add
  54. AND-Logical AND
  55. ANDNPS-Bit-wise Logical And Not For Single-FP
  56. ANDPS-Bit-wise Logical And For Single FP
  57. ARPL-Adjust RPL Field of Segment Selector
  58. BOUND-Check Array Index Against Bounds
  59. BSF-Bit Scan Forward
  60. BSR-Bit Scan Reverse
  61. BSWAP-Byte Swap
  62. BT-Bit Test
  63. BTC-Bit Test and Complement
  64. BTR-Bit Test and Reset
  65. BTS-Bit Test and Set
  66. CALL-Call Procedure
  67. CBW/CWDE-Convert Byte to Word/Convert Word to Doubleword
  68. CDQ-Convert Double to Quad
  69. CLC-Clear Carry Flag
  70. CLD-Clear Direction Flag
  71. CLI-Clear Interrupt Flag
  72. CLTS-Clear Task-Switched Flag in CR0
  73. CMC-Complement Carry Flag
  74. CMOVcc-Conditional Move
  75. CMP-Compare Two Operands
  76. CMPPS-Packed Single-FP Compare
  77. CMPS/CMPSB/CMPSW/CMPSD-Compare String Operands
  78. CMPSS-Scalar Single-FP Compare
  79. CMPXCHG-Compare and Exchange
  80. CMPXCHG8B-Compare and Exchange 8 Bytes
  81. COMISS-Scalar Ordered Single-FP Compare and Set EFLAGS
  82. CPUID-CPU Identification
  83. CVTPI2PS-Packed Signed INT32 to Packed Single-FP Conversion
  84. CVTPI2PS-Packed Signed INT32 to Packed Single-FP Conversion
  85. CVTPI2PS-Packed Signed INT32 to Packed Single-FP Conversion
  86. CVTPS2PI-Packed Single-FP to Packed INT32 Conversion
  87. CVTPS2PI-Packed Single-FP to Packed INT32 Conversion
  88. CVTSI2SS-Scalar Signed INT32 to Single-FP Conversion
  89. CVTSS2SI-Scalar Single-FP to Signed INT32 Conversion
  90. CVTTPS2PI-Packed Single-FP to Packed INT32 Conversion (Truncate)
  91. CWD/CDQ-Convert Word to Doubleword/Convert Doubleword to Quadword
  92. CWDE-Convert Word to Doubleword
  93. DAA-Decimal Adjust AL after Addition
  94. DAS-Decimal Adjust AL after Subtraction
  95. DEC-Decrement by 1
  96. DIV-Unsigned Divide
  97. DIVPS-Packed Single-FP Divide
  98. DIVSS-Scalar Single-FP Divide
  99. EMMS-Empty MMX State
  100. ENTER-Make Stack Frame for Procedure Parameters
  101. F2XM1-Compute 2-1
  102. FABS-Absolute Value
  103. FADD/FADDP/FIADD-Add
  104. FBLD-Load Binary Coded Decimal
  105. FBSTP-Store BCD Integer and Pop
  106. FCHS-Change Sign
  107. FCLEX/FNCLEX-Clear Exceptions
  108. FCMOVcc-Floating-Point Conditional Move
  109. FCOM/FCOMP/FCOMPP-Compare Real
  110. FCOMI/FCOMIP/
  111. FUCOMI/FUCOMIP-Compare Real and Set
  112. EFLAGS
  113. FCOMI/FCOMIP/
  114. FUCOMI/FUCOMIP-Compare Real and Set EFLAGS
  115. FCOMI/FCOMIP/
  116. FUCOMI/FUCOMIP-Compare Real and Set EFLAGS
  117. FCOS-Cosine
  118. FDECSTP-Decrement Stack-Top Pointer
  119. FDIV/FDIVP/FIDIV-Divide
  120. FDIVR/FDIVRP/FIDIVR-Reverse Divide
  121. FFREE-Free Floating-Point Register
  122. FICOM/FICOMP-Compare Integer
  123. FILD-Load Integer
  124. FINCSTP-Increment Stack-Top Pointer
  125. FINIT/FNINIT-Initialize Floating-Point Unit
  126. FIST/FISTP-Store Integer
  127. FLD-Load Real
  128. FLD1/FLDL2T/FLDL2E/FLDPI/FLDLG2/FLDLN2/FLDZ-Load Constant
  129. FLDCW-Load Control Word
  130. FLDENV-Load FPU Environment
  131. FMUL/FMULP/FIMUL-Multiply
  132. FNOP-No Operation
  133. FPATAN-Partial Arctangent
  134. FPREM-Partial Remainder
  135. FPREM1-Partial Remainder
  136. FPTAN-Partial Tangent
  137. FRNDINT-Round to Integer
  138. FRSTOR-Restore FPU State
  139. FSAVE/FNSAVE-Store FPU State
  140. FSCALE-Scale
  141. FSIN-Sine
  142. FSINCOS-Sine and Cosine
  143. FSQRT-Square Root
  144. FST/FSTP-Store Real
  145. FSTCW/FNSTCW-Store Control Word
  146. FSTENV/FNSTENV-Store FPU Environment
  147. FSTSW/FNSTSW-Store Status Word
  148. FSUB/FSUBP/FISUB-Subtract
  149. FSUBR/FSUBRP/FISUBR-Reverse Subtract
  150. FTST-TEST
  151. FUCOM/FUCOMP/FUCOMPP-Unordered Compare Real
  152. FWAIT-Wait
  153. FXAM-Examine
  154. FXCH-Exchange Register Contents
  155. FXRSTOR-Restore FP and MMX
  156. State and
  157. Streaming SIMD Extension State
  158. FXRSTOR-Restore FP And MMX State
  159. FXRSTOR-Restore FP And MMX State And Streaming SIMD
  160. FXRSTOR-Restore FP And MMX State And Streaming SIMD Extension State
  161. FXSAVE-Store FP and MMX State and Streaming SIMD Extension State
  162. FXTRACT-Extract Exponent and Significand
  163. FYL2X-Compute y log x
  164. FYL2XP1-Compute y log(x+1)
  165. HLT-Halt
  166. IDIV-Signed Divide
  167. IMUL-Signed Multiply
  168. IN-Input from Port
  169. INC-Increment by 1
  170. INS/INSB/INSW/INSD-Input from Port to String
  171. INT n/INTO/INT 3-Call to Interrupt Procedure
  172. INVD-Invalidate Internal Caches
  173. INVLPG-Invalidate TLB Entry
  174. IRET/IRETD-Interrupt Return
  175. Jcc-Jump if Condition Is Met
  176. JMP-Jump
  177. LAHF-Load Status Flags into AH Register
  178. LAR-Load Access Rights Byte
  179. LDMXCSR-Load Streaming SIMD Extension Control/Status
  180. LDS/LES/LFS/LGS/LSS-Load Far Pointer
  181. LEA-Load Effective Address
  182. LEAVE-High Level Procedure Exit
  183. LES-Load Full Pointer
  184. LFS-Load Full Pointer
  185. LGDT/LIDT-Load Global/Interrupt Descriptor Table Register
  186. LGS-Load Full Pointer
  187. LLDT-Load Local Descriptor Table Register
  188. LIDT-Load Interrupt Descriptor Table Register
  189. LMSW-Load Machine Status Word
  190. LOCK-Assert LOCK# Signal Prefix
  191. LODS/LODSB/LODSW/LODSD-Load String
  192. LOOP/LOOPcc-Loop According to ECX Counter
  193. LSL-Load Segment Limit
  194. LSS-Load Full Pointer
  195. LTR-Load Task Register
  196. MASKMOVQ-Byte Mask Write
  197. MAXPS-Packed Single-FP Maximum
  198. MAXSS-Scalar Single-FP Maximum
  199. MINPS-Packed Single-FP Minimum
  200. MINSS-Scalar Single-FP Minimum
  201. MOV-Move
  202. MOV-Move to/from Control Registers
  203. MOV-Move to/from Debug Registers
  204. MOVAPS-Move Aligned Four Packed Single-FP
  205. MOVD-Move 32 Bits
  206. MOVHLPS- High to Low Packed Single-FP
  207. MOVHPS-Move High Packed Single-FP
  208. MOVLHPS-Move Low to High Packed Single-FP
  209. MOVLPS-Move Low Packed Single-FP
  210. MOVMSKPS-Move Mask To Integer
  211. MOVNTPS-Move Aligned Four Packed Single-FP Non Temporal
  212. MOVNTQ-Move 64 Bits Non Temporal
  213. MOVQ-Move 64 Bits
  214. MOVS/MOVSB/MOVSW/MOVSD-Move Data from StringtoString
  215. MOVSS-Move Scalar Single-FP
  216. MOVSX-Move with Sign-Extension
  217. MOVUPS-Move Unaligned Four Packed Single-FP
  218. MOVZX-Move with Zero-Extend
  219. MUL-Unsigned Multiply
  220. MULPS-Packed Single-FP Multiply
  221. MULSS-Scalar Single-FP Multiply
  222. NEG-Two's Complement Negation
  223. NOP-No Operation
  224. NOT-One's Complement Negation
  225. OR-Logical Inclusive OR
  226. ORPS-Bit-wise Logical OR for Single-FP Data
  227. OUT-Output to Port
  228. OUTS/OUTSB/OUTSW/OUTSD-Output String to Port
  229. PACKSSWB/PACKSSDW-Pack with Signed Saturation
  230. PACKUSWB-Pack with Unsigned Saturation
  231. PADDB/PADDW/PADDD-Packed Add
  232. PADDSB/PADDSW-Packed Add with Saturation
  233. PADDUSB/PADDUSW-Packed Add Unsigned with Saturation
  234. PAND-Logical AND
  235. PANDN-Logical AND NOT
  236. PAVGB/PAVGW-Packed Average
  237. PCMPEQB/PCMPEQW/PCMPEQD-Packed Compare for Equal
  238. PCMPGTB/PCMPGTW/PCMPGTD-Packed Compare for Greater Than
  239. PEXTRW-Extract Word
  240. PINSRW-Insert Word
  241. PMADDWD-Packed Multiply and Add
  242. PMAXSW-Packed Signed Integer Word Maximum
  243. PMAXUB-Packed Unsigned Integer Byte Maximum
  244. PMINSW-Packed Signed Integer Word Minimum
  245. PMINUB-Packed Unsigned Integer Byte Minimum
  246. PMOVMSKB-Move Byte Mask To Integer
  247. PMULHUW-Packed Multiply High Unsigned
  248. PMULHW-Packed Multiply High
  249. PMULLW-Packed Multiply Low
  250. POP-Pop a Value from the Stack
  251. POPA/POPAD-Pop All General-Purpose Registers
  252. POPF/POPFD-Pop Stack into EFLAGS Register
  253. POR-Bitwise Logical OR
  254. PREFETCH-Prefetch
  255. PSADBW-Packed Sum of Absolute Differences
  256. PSHUFW-Packed Shuffle Word
  257. PSLLW/PSLLD/PSLLQ-Packed Shift Left Logical
  258. PSRAW/PSRAD-Packed Shift Right Arithmetic
  259. PSRLW/PSRLD/PSRLQ-Packed Shift Right Logical
  260. PSUBB/PSUBW/PSUBD-Packed Subtract
  261. PSUBSB/PSUBSW-Packed Subtract with Saturation
  262. PSUBUSB/PSUBUSW-Packed Subtract Unsigned with Saturation
  263. PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ-Unpack High Packed Data
  264. PUSH-Push Word or Doubleword Onto the Stack
  265. PUSHA/PUSHAD-Push All General-Purpose Registers
  266. PUSHF/PUSHFD-Push EFLAGS Register onto the Stack
  267. PXOR-Logical Exclusive OR
  268. RCL/RCR/ROL/ROR--Rotate
  269. RCPPS-Packed Single-FP Reciprocal
  270. RCPSS-Scalar Single-FP Reciprocal
  271. RDMSR-Read from Model Specific Register
  272. RDPMC-Read Performance-Monitoring Counters
  273. RDTSC-Read Time-Stamp Counter
  274. REP/REPE/REPZ/REPNE/REPNZ-Repeat String Operation Prefix
  275. RET-Return from Procedure
  276. ROL/ROR-Rotate
  277. RSM-Resume from System Management Mode
  278. RSQRTPS-Packed Single-FP Square Root Reciprocal
  279. RSQRTSS-Scalar Single-FP Square Root Reciprocal
  280. SAHF-Store AH into Flags
  281. SAL/SAR/SHL/SHR-Shift
  282. SBB-Integer Subtraction with Borrow
  283. SCAS/SCASB/SCASW/SCASD-Scan String
  284. SETcc-Set Byte on Condition
  285. SFENCE-Store Fence
  286. SGDT/SIDT-Store Global/Interrupt Descriptor Table Register
  287. SHL/SHR-Shift Instructions
  288. SHLD-Double Precision Shift Left
  289. SHRD-Double Precision Shift Right
  290. SHUFPS-Shuffle Single-FP
  291. SIDT-Store Interrupt Descriptor Table Register
  292. SLDT-Store Local Descriptor Table Register
  293. SMSW-Store Machine Status Word
  294. SQRTPS-Packed Single-FP Square Root
  295. SQRTSS-Scalar Single-FP Square Root
  296. STC-Set Carry Flag
  297. STD-Set Direction Flag
  298. STI-Set Interrupt Flag
  299. STMXCSR-Store Streaming SIMD Extension Control/Status
  300. STOS/STOSB/STOSW/STOSD-Store String
  301. STR-Store Task Register
  302. SUB-Subtract
  303. SUBPS-Packed Single-FP Subtract
  304. SUBSS-Scalar Single-FP Subtract
  305. SYSENTER-Fast Transition to System Call Entry Point
  306. SYSEXIT-Fast Transition from System Call Entry Point
  307. TEST-Logical Compare
  308. UCOMISS-Unordered Scalar Single-FP compare and set EFLAGS
  309. UD2-Undefined Instruction
  310. UNPCKHPS-Unpack High Packed Single-FP Data
  311. UNPCKLPS-Unpack Low Packed Single-FP Data
  312. VERR/VERW-Verify a Segment for Reading or Writing
  313. WAIT/FWAIT-Wait
  314. WBINVD-Write Back and Invalidate Cache
  315. WRMSR-Write to Model Specific Register
  316. XADD-Exchange and Add
  317. XCHG-Exchange Register/Memory with Register
  318. XLAT/XLATB-Table Look-up Translation
  319. XOR-Logical Exclusive OR
  320. XORPS-Bit-wise Logical Xor for Single-FP Data

  321. APPENDIX A. OPCODE MAP

  322. Instruction Formats and Encodings

  323. APPENDIX B. INSTRUCTION FORMATS AND ENCODINGS

  324. B.1.MACHINE INSTRUCTION FORMAT
  325. B.1.1.Reg Field (reg)
  326. B.1.2.Encoding of Operand Size Bit (w)
  327. B.1.3.Sign Extend (s) Bit
  328. B.1.4.Segment Register Field (sreg)
  329. B.1.5.Special-Purpose Register (eee) Field
  330. B.1.6.Condition Test Field (tttn)
  331. B.1.7.Direction (d) Bit
  332. B.2.INTEGER INSTRUCTION FORMATS AND ENCODINGS
  333. AND - Logical AND
  334. ARPL - Adjust RPL Field of Selector
  335. BOUND - Check Array Against Bounds
  336. BSF - Bit Scan Forward
  337. BSR - Bit Scan Reverse
  338. BSWAP - Byte Swap
  339. BT - Bit Test
  340. BTC - Bit Test and Complement
  341. BTR - Bit Test and Reset
  342. Instruction and Format Encoding
  343. BTS - Bit Test and Set
  344. CALL - Call Procedure (in same segment)
  345. CALL - Call Procedure (in other segment)
  346. CBW - Convert Byte to Word
  347. CDQ - Convert Doubleword to Qword
  348. CLC - Clear Carry Flag
  349. CLD - Clear Direction Flag
  350. CLI - Clear Interrupt Flag
  351. CLTS - Clear Task-Switched Flag in CR0
  352. CMC - Complement Carry Flag
  353. CMOVcc - Conditional Move
  354. CMP - Compare Two Operands
  355. CMPS/CMPSB/CMPSW/CMPSD - Compare String Operands
  356. CMPXCHG - Compare and Exchange Instruction and FormatEncoding
  357. CMPXCHG8B - Compare and Exchange 8 Bytes
  358. CPUID - CPU Identification
  359. CWD - Convert Word to Doubleword
  360. CWDE - Convert Word to Doubleword
  361. DAA - Decimal Adjust AL after Addition
  362. DAS - Decimal Adjust AL after Subtraction0010 1111
  363. DEC - Decrement by 1
  364. DIV - Unsigned Divide
  365. ENTER - Make Stack Frame for High Level Procedure
  366. HLT - Halt
  367. IDIV - Signed Divide
  368. IMUL - Signed Multiply
  369. IN - Input From Port
  370. INC - Increment by 1
  371. INS - Input from DX Port Instruction and Format Encoding
  372. INT n - Interrupt Type n
  373. INT - Single-Step Interrupt 3
  374. INTO - Interrupt 4 on Overflow
  375. INVD - Invalidate Cache
  376. INVLPG - Invalidate TLB Entry
  377. IRET/IRETD - Interrupt Return
  378. Jcc - Jump if Condition is Met
  379. JCXZ/JECXZ - Jump on CX/ECX Zero
  380. JMP - Unconditional Jump (to same segment)
  381. JMP - Unconditional Jump (to other segment)
  382. LAHF - Load Flags into AHRegister
  383. LAR - Load Access Rights Byte
  384. LDS - Load Pointer to DS
  385. LEA - Load Effective Address
  386. LEAVE - High Level Procedure Exit
  387. LES - Load Pointer to ES
  388. LFS - Load Pointer to FS
  389. LGDT - Load Global Descriptor Table Register0000 1111 : 0000 0001 : mod 010 r/m
  390. LGS - Load Pointer to GS
  391. LIDT - Load Interrupt Descriptor Table Register
  392. LLDT - Load Local Descriptor Table Register Instruction and Format Encoding
  393. LMSW - Load Machine Status Word
  394. LOCK - Assert LOCK# Signal Prefix
  395. LODS/LODSB/LODSW/LODSD - Load String Operand
  396. LOOP - Loop Count
  397. LOOPZ/LOOPE - Loop Count while Zero/Equal1110 0001 : 8-bit displacement
  398. LOOPNZ/LOOPNE - Loop Count while not Zero/Equal
  399. LSL - Load Segment Limit
  400. LSS - Load Pointer to SS
  401. LTR - Load Task Register
  402. MOV - Move Data
  403. MOV - Move to/from Control Registers Instruction and Format Encoding
  404. MOV - Move to/from Debug Registers
  405. MOV - Move to/from Segment Registers
  406. MOVS/MOVSB/MOVSW/MOVSD - Move Data from String to String
  407. MOVSX - Move with Sign-Extend
  408. MOVZX - Move with Zero-Extend
  409. MUL - Unsigned Multiply
  410. NEG - Two's Complement Negation
  411. NOP - No Operation
  412. NOT - One's Complement Negation Instruction and Format Encoding
  413. OR - Logical Inclusive OR
  414. OUT - Output to Port
  415. OUTS - Output to DX Port
  416. POP - Pop a Word from the Stack
  417. POP - Pop a Segment Register from the Stack
  418. POPA/POPAD - Pop All General Registers
  419. POPF/POPFD - Pop Stack into FLAGS or EFLAGS Register
  420. PUSH - Push Operand onto the Stack
  421. PUSH - Push Segment Register onto the Stack
  422. PUSHA/PUSHAD - Push All General Registers0110 0000
  423. PUSHF/PUSHFD - Push Flags Register onto the Stack Instruction and Format Encoding
  424. RCL - Rotate thru Carry Left
  425. RCR - Rotate thru Carry Right
  426. RDMSR - Read from Model-Specific Register
  427. RDPMC - Read Performance Monitoring Counters
  428. RDTSC - Read Time-Stamp Counter
  429. REP INS - Input String
  430. REP LODS - Load String
  431. REP MOVS - Move String
  432. REP OUTS - Output String
  433. REP STOS - Store String
  434. REPE CMPS - Compare String
  435. REPE SCAS - Scan String
  436. REPNE CMPS - Compare String
  437. REPNE SCAS - Scan String
  438. RET - Return from Procedure (to same segment)
  439. RET - Return from Procedure (to other segment) Instruction and Format Encoding
  440. ROL - Rotate Left
  441. ROR - Rotate Right
  442. RSM - Resume from System Management Mode
  443. SAHF - Store AH into Flags
  444. SAL - Shift Arithmetic Left
  445. SAR - Shift Arithmetic Right
  446. SBB - Integer Subtraction with Borrow
  447. SCAS/SCASB/SCASW/SCASD - Scan String1101 111w Instruction and Format Encoding
  448. SETcc - Byte Set on Condition
  449. SGDT - Store Global Descriptor Table Register
  450. SHL - Shift Left
  451. SHLD - Double Precision Shift Left
  452. SHR - Shift Right
  453. SHRD - Double Precision Shift Right
  454. SIDT - Store Interrupt Descriptor Table Register
  455. SLDT - Store Local Descriptor Table Register Instruction and Format Encoding
  456. SMSW - Store Machine Status Word
  457. STC - Set Carry Flag
  458. STD - Set Direction Flag
  459. STI - Set Interrupt Flag
  460. STOS/STOSB/STOSW/STOSD - Store String Data
  461. STR - Store Task Register
  462. SUB - Integer Subtraction
  463. TEST - Logical Compare
  464. UD2 - Undefined instruction
  465. VERR - Verify a Segment for Reading
  466. VERW - Verify a Segment for Writing
  467. WAIT - Wait
  468. WBINVD - Writeback and Invalidate Data Cache
  469. WRMSR - Write to Model-Specific Register
  470. XADD - Exchange and Add
  471. XCHG - Exchange Register/Memory with Register
  472. XLAT/XLATB - Table Look-up Translation
  473. XOR - Logical Exclusive OR
  474. Prefix Bytes
  475. B.3.MMX INSTRUCTION FORMATS AND ENCODINGS
  476. B.3.1.Granularity Field (gg)
  477. B.3.2.MMX and General-Purpose Register Fields (mmxreg and reg)
  478. PADDUS - Add unsigned with saturation
  479. PAND - Bitwise And
  480. PANDN - Bitwise AndNot
  481. PCMPEQ - Packed compare for equality
  482. PCMPGT - Packed compare greater (signed)
  483. PMADD - Packed multiply add
  484. PMULH - Packed multiplication
  485. PMULL - Packed multiplication
  486. POR - Bitwise Or
  487. BWDQ
  488. PSLL - Packed shift left logical
  489. PSRA - Packed shift right arithmetic
  490. PSRL - Packed shift right logical
  491. PSUB - Subtract with wrap-around
  492. PSUBS - Subtract signed with saturation
  493. PSUBUS - Subtract unsigned with saturation
  494. PUNPCKH - Unpack high data to next larger type
  495. BWDQ
  496. PUNPCKL - Unpack low data to next larger type
  497. PXOR - Bitwise Xor
  498. BWDQ
  499. Prefix Type Effect on Streaming SIMD Extensions
  500. B.4.2.Notations
  501. B.4.3.Formats and Encodings
  502. CMPSS - Scalar Single-FP Compare
  503. COMISS - Scalar Ordered Single-FP compare and set EFLAGS
  504. CVTPI2PS - Packed signed INT32 to Packed Single-FP conversion
  505. CVTPS2PI - Packed Single-FP to Packed INT32 conversion
  506. CVTSI2SS - Scalar signed INT32 to Single-FP conversion
  507. CVTSS2SI - Scalar Single-FP to signed INT32 conversion
  508. CVTTPS2PI - Packed Single-FP to Packed INT32 Conversion
  509. BWDQDQ
  510. CVTTSS2SI - Scalar Single-FP to signed INT32 conversion
  511. DIVPS - Packed Single-FP Divide
  512. DIVSS - Scalar Single-FP Divide
  513. FXRSTOR - Restore FP/MMX and Streaming SIMD Extensions state
  514. FXSAVE - Store FP/MMX and Streaming SIMD Extensions state
  515. LDMXCSR - Load Streaming SIMD Extensions Technology
  516. Control/Status Register
  517. MAXPS - Packed Single-FP Maximum
  518. MAXSS - Scalar Single-FP Maximum
  519. MINPS - Packed Single-FP Minimum Instruction and Format Encoding
  520. BWDQDQ
  521. MINSS - Scalar Single-FP Minimum
  522. MOVAPS - Move Aligned Four Packed Single-FP
  523. MOVHLPS - Move High to Low Packed Single-FP
  524. MOVHPS - Move High Packed Single-FP
  525. MOVLHPS - Move Low to High Packed Single-FP
  526. MOVLPS - Move Low Packed Single-FP
  527. MOVMSKPS - Move Mask To Integer
  528. MOVSS - Move Scalar Single-FP Instruction and Format
  529. MOVUPS - Move Unaligned Four Packed Single-FP
  530. MULPS - Packed Single-FP Multiply
  531. MULSS - Scalar Single-FP Multiply
  532. ORPS: Bit-wise Logical OR for Single-FP Data
  533. RCPPS - Packed Single-FP Reciprocal
  534. RCPSS - Scalar Single-FP Reciprocal
  535. RSQRTPS - Packed Single-FP Square Root Reciprocal
  536. RSQRTSS - Scalar Single-FP Square Root Reciprocal
  537. SHUFPS - Shuffle Single-FP
  538. SQRTPS - Packed Single-FP Square Root
  539. SQRTSS - Scalar Single-FP Square Root
  540. STMXCSR - Store Streaming SIMD Extensions Technology Control/Status Register
  541. SUBPS: Packed Single-FP Subtract
  542. SUBSS: Scalar Single-FP Subtract
  543. UCOMISS: Unordered Scalar Single-FP compare and set EFLAGS
  544. UNPCKHPS: Unpack High Packed Single-FP Data
  545. UNPCKLPS: Unpack Low Packed Single-FP Data
  546. XORPS: Bit-wise Logical Xor for Single-FP Data
  547. PAVGB/PAVGW - Packed Average
  548. PEXTRW - Extract Word
  549. PINSRW - Insert Word
  550. PMAXSW - Packed Signed Integer Word Maximum
  551. PMAXUB - Packed Unsigned Integer Byte Maximum
  552. PMINSW - Packed Signed Integer Word Minimum
  553. PMINUB - Packed Unsigned Integer Byte Minimum
  554. PMOVMSKB - Move Byte Mask To Integer
  555. B.5.FLOATING-POINT INSTRUCTION FORMATS AND ENCODINGS
  556. F2XM1 - Compute 2 - 1
  557. FABS - Absolute Value
  558. FADD - Add
  559. FADDP - Add and Pop
  560. FBLD - Load Binary Coded Decimal
  561. FBSTP - Store Binary Coded Decimal and Pop
  562. FCHS - Change Sign
  563. FCLEX - Clear Exceptions
  564. FCMOVcc - Conditional Move on EFLAG Register Condition Codes
  565. FCOM - Compare Real
  566. FCOMP - Compare Real and Pop
  567. FCOMPP - Compare Real and Pop Twice
  568. FCOMI - Compare Real and Set EFLAGS
  569. FCOMIP - Compare Real, Set EFLAGS, and Pop11011 111 : 11 110 ST(i)
  570. FCOS - Cosine of ST(0)
  571. FDECSTP - Decrement Stack-Top Pointer
  572. FDIV - Divide
  573. FDIVP - Divide and Pop
  574. FDIVR - Reverse Divide
  575. FDIVRP - Reverse Divide and Pop
  576. FFREE - Free ST(i) Register
  577. FIADD - Add Integer
  578. FICOM - Compare Integer
  579. FICOMP - Compare Integer and Pop
  580. FIDIV
  581. FIDIVR
  582. FILD - Load Integer
  583. FIMUL
  584. FINCSTP - Increment Stack Pointer
  585. FINIT - Initialize Floating-Point Unit
  586. FIST - Store Integer
  587. FISTP - Store Integer and Pop
  588. FISUB
  589. FISUBR
  590. FLD - Load Real
  591. FLD1 - Load +1.0 into ST(0)
  592. FLDCW - Load Control Word
  593. FLDENV - Load FPU Environment
  594. FLDL2E - Load log() into ST(0)
  595. FLDL2T - Load log(10) into ST(0)
  596. FLDLG2 - Load log(2) into ST(0)
  597. FLDLN2 - Load log(2) into ST(0)
  598. FLDPI - Load into ST(0)
  599. FLDZ - Load +0.0 into ST(0)
  600. FMUL - Multiply
  601. FMULP - Multiply
  602. FNOP - No Operation
  603. FPATAN - Partial Arctangent
  604. FPREM - Partial Remainder
  605. FPREM1 - Partial Remainder (IEEE)
  606. FPTAN - Partial Tangent
  607. FRNDINT - Round to Integer
  608. FRSTOR - Restore FPU State
  609. FSAVE - Store FPU State
  610. FSCALE - Scale
  611. FSIN - Sine
  612. FSINCOS - Sine and Cosine
  613. FSQRT - Square Root
  614. FST - Store Real
  615. FSTCW - Store Control Word
  616. FSTENV - Store FPU Environment
  617. FSTP - Store Real and Pop
  618. FSTSW - Store Status Word into AX
  619. FSTSW - Store Status Word into Memory
  620. FSUB - Subtract
  621. FSUBP - Subtract and Pop
  622. FSUBR - Reverse Subtract
  623. FSUBRP - Reverse Subtract and Pop
  624. FTST - Test
  625. FUCOM - Unordered Compare Real
  626. FUCOMP - Unordered Compare Real and Pop11011 101 : 1110 1 ST(i)
  627. FUCOMPP - Unordered Compare Real and Pop Twice
  628. FUCOMI - Unordered Compare Real and Set EFLAGS
  629. FUCOMIP - Unordered Compare Real, Set EFLAGS, and Pop
  630. FXAM - Examine
  631. FXCH - Exchange ST(0) and ST(i)
  632. FXTRACT - Extract Exponent and Significand11011 001 : 1111 0100
  633. FYL2X - ST(1) log(ST(0))
  634. FYL2XP1 - ST(1) log(ST(0) + 1.0)
  635. FWAIT - Wait until FPU Ready

  636. APPENDIX C. COMPILER INTRINSICS AND FUNCTIONAL EQUIVALENTS

  637. INDEX A - B - C
  638. INDEX D - E - F
  639. INDEX G
  640. INDEX H - I - J - L - M
  641. INDEX N - O - P
  642. INDEX Q - R
  643. INDEX S - T
  644. INDEX U - V - W - X - Z