- •A.1 Notes on Using OPCODE Tables
- •A.2 Key to Abbreviations
- •A.2.1 Codes for Addressing Method
- •A.2.2 Codes for Operand Type
- •A.2.3 Register Codes
- •A.3 Opcode Look-up Examples
- •A.3.1 One-Byte Opcode Instructions
- •A.3.2 Two-Byte Opcode Instructions
- •A.3.3 Opcode Map Notes
- •A.3.4 Opcode Extensions for One-Byte and Two-Byte Opcodes
- •A.3.5 Escape Opcode Instructions
- •A.3.5.1 Escape Opcodes with D8 as First Byte
- •A.3.5.2 Escape Opcodes with D9 as First Byte
- •A.3.5.3 Escape Opcodes with DA as First Byte
- •A.3.5.4 Escape Opcodes with DB as First Byte
- •A.3.5.5 Escape Opcodes with DC as First Byte
- •A.3.5.6 Escape Opcodes with DD as First Byte
- •A.3.5.7 Escape Opcodes with DE as First Byte
- •A.3.5.8 Escape Opcodes with DF As First Byte
- •APPENDIX B Instruction Formats and Encodings
- •B.1 Machine Instruction Format
- •B.1.1 Legacy Prefixes
- •B.1.2 REX Prefixes
- •B.1.3 Opcode Fields
- •B.1.4 Special Fields
- •B.1.4.1 Reg Field (reg) for Non-64-Bit Modes
- •B.1.4.2 Reg Field (reg) for 64-Bit Mode
- •B.1.4.3 Encoding of Operand Size (w) Bit
- •B.1.4.4 Sign-Extend (s) Bit
- •B.1.4.5 Segment Register (sreg) Field
- •B.1.4.6 Special-Purpose Register (eee) Field
- •B.1.4.7 Condition Test (tttn) Field
- •B.1.4.8 Direction (d) Bit
- •B.1.5 Other Notes
- •B.2 General-Purpose Instruction Formats and Encodings for Non-64-Bit Modes
- •B.2.1 General Purpose Instruction Formats and Encodings for 64-Bit Mode
- •B.4 64-bit Mode Instruction Encodings for SIMD Instruction Extensions
- •B.5 MMX Instruction Formats and Encodings
- •B.5.1 Granularity Field (gg)
- •B.5.3 MMX Instruction Formats and Encodings Table
- •B.6 P6 Family INstruction Formats and Encodings
- •B.7 SSE Instruction Formats and Encodings
- •B.8 SSE2 Instruction Formats and Encodings
- •B.8.1 Granularity Field (gg)
- •B.9 SSE3 Formats and Encodings Table
- •B.10 Special Encodings for 64-Bit Mode
- •B.11 Floating-Point Instruction Formats and Encodings
- •C.1 Simple Intrinsics
- •INDEX FOR VOLUME 2A & 2B
- •INTEL SALES OFFICES
INDEX FOR VOLUME 2A & 2B
Numerics
64-bit mode
control and debug registers . . . . . . . . . . . .2-15 default operand size . . . . . . . . . . . . . . . . . .2-15 direct memory-offset MOVs . . . . . . . . . . . .2-14 general purpose encodings . . . . . . . . . . . B-23 immediates . . . . . . . . . . . . . . . . . . . . . . . . .2-14 introduction . . . . . . . . . . . . . . . . . . . . . . . . . .2-9 machine instructions . . . . . . . . . . . . . . . . . . B-1 reg (reg) field . . . . . . . . . . . . . . . . . . . . . . . B-4 REX prefixes. . . . . . . . . . . . . . . . . . . . . 2-9, B-2 RIP-relative addressing . . . . . . . . . . . . . . .2-14 SIMD encodings . . . . . . . . . . . . . . . . . . . . B-48 special instruction encodings . . . . . . . . . . B-77 summary table notation . . . . . . . . . . . . . . . .3-6
Binary numbers . . . . . . . . . . . . . . . . . . . . . . . . 1-4 Bit order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 BOUND instruction . . . . . . . . . . . . . . . . . . . . . 3-65 BOUND range exceeded exception (#BR) . . . 3-65 Branch hints . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 Brand information . . . . . . . . . . . . . . . . . . . . . 3-171
processor brand index. . . . . . . . . . . . . . . 3-174 processor brand string . . . . . . . . . . . . . . 3-171 BSF instruction . . . . . . . . . . . . . . . . . . . . . . . . 3-67 BSR instruction. . . . . . . . . . . . . . . . . . . . . . . . 3-69 BSWAP instruction . . . . . . . . . . . . . . . . . . . . . 3-71 BT instruction . . . . . . . . . . . . . . . . . . . . . . . . . 3-73 BTC instruction . . . . . . . . . . . . . . . . . . . 3-76, 3-533 BTR instruction . . . . . . . . . . . . . . . . . . . 3-79, 3-533 BTS instruction . . . . . . . . . . . . . . . . . . . 3-82, 3-533 Byte order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
A
AAA instruction. . . . . . . . . . . . . . . . . . . . . . . . .3-18 AAD instruction . . . . . . . . . . . . . . . . . . . . . . . .3-20 AAM instruction . . . . . . . . . . . . . . . . . . . . . . . .3-22 AAS instruction. . . . . . . . . . . . . . . . . . . . . . . . .3-24 Abbreviations, opcode key . . . . . . . . . . . . . . . . A-2 Access rights, segment descriptor . . . . . . . . .3-504 ADC instruction . . . . . . . . . . . . . . . . . . 3-26, 3-533 ADD instruction . . . . . . . . 3-18, 3-29, 3-246, 3-533 ADDPD instruction . . . . . . . . . . . . . . . . . . . . . .3-32 ADDPS instruction . . . . . . . . . . . . . . . . . . . . . .3-35 Addressing methods
codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2 operand codes . . . . . . . . . . . . . . . . . . . . . . A-3 register codes . . . . . . . . . . . . . . . . . . . . . . . A-4 RIP-relative . . . . . . . . . . . . . . . . . . . . . . . . .2-14 Addressing, segments . . . . . . . . . . . . . . . . . . . .1-4 ADDSD instruction . . . . . . . . . . . . . . . . . . . . . .3-38 ADDSS instruction . . . . . . . . . . . . . . . . . . . . . .3-41 ADDSUBPD instruction . . . . . . . . . . . . . . . . . .3-44 ADDSUBPS instruction . . . . . . . . . . . . . . . . . .3-48 AND instruction . . . . . . . . . . . . . . . . . . 3-52, 3-533 ANDNPD instruction. . . . . . . . . . . . . . . . . . . . .3-59 ANDNPS instruction. . . . . . . . . . . . . . . . . . . . .3-61 ANDPD instruction . . . . . . . . . . . . . . . . . . . . . .3-55 ANDPS instruction . . . . . . . . . . . . . . . . . . . . . .3-57 Arctangent, x87 FPU operation . . . . . . . . . . .3-343 ARPL instruction . . . . . . . . . . . . . . . . . . . . . . .3-63
B
B (default stack size) flag, segment
descriptor . . . . . . . . . . . . . . . . . . . .4-179 Base (operand addressing) . . . . . . . . . . . . . . . .2-4 BCD integers
packed . . . . . . . . . . 3-246, 3-248, 3-281, 3-283 unpacked . . . . . . . . . . . . 3-18, 3-20, 3-22, 3-24
C
Cache and TLB information . . . . . . . . . . . . . 3-168 Caches, invalidating (flushing) . . . . . . 3-471, 4-357 CALL instruction . . . . . . . . . . . . . . . . . . . . . . . 3-85 CBW instruction . . . . . . . . . . . . . . . . . . . . . . 3-102 CDQ instruction . . . . . . . . . . . . . . . . . . . . . . 3-244 CDQE instruction . . . . . . . . . . . . . . . . . . . . . 3-102 CF (carry) flag, EFLAGS register .3-29, 3-73, 3-76,
3-79, 3-82, 3-103, 3-111, 3-250, 3-445, 3-451, 3-677, 4-192, 4-242, 4-257, 4-260, 4-288, 4-302
CLC instruction . . . . . . . . . . . . . . . . . . . . . . . 3-103 CLD instruction . . . . . . . . . . . . . . . . . . . . . . . 3-104 CLFLUSH instruction . . . . . . . . . . . . . . . . . . 3-105 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-167 CLI instruction. . . . . . . . . . . . . . . . . . . . . . . . 3-107 CLTS instruction . . . . . . . . . . . . . . . . . . . . . . 3-110 CMC instruction . . . . . . . . . . . . . . . . . . . . . . 3-111 CMOVcc flag . . . . . . . . . . . . . . . . . . . . . . . . 3-167 CMOVcc instructions . . . . . . . . . . . . . . . . . . 3-112 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-167 CMP instruction . . . . . . . . . . . . . . . . . . . . . . 3-118 CMPPD instruction . . . . . . . . . . . . . . . . . . . . 3-121 CMPPS instruction . . . . . . . . . . . . . . . . . . . . 3-126 CMPS instruction . . . . . . . . . . . . . . . . 3-131, 4-211 CMPSB instruction . . . . . . . . . . . . . . . . . . . . 3-131 CMPSD instruction . . . . . . . . . . . . . . . 3-131, 3-136 CMPSQ instruction . . . . . . . . . . . . . . . . . . . . 3-131 CMPSS instruction . . . . . . . . . . . . . . . . . . . . 3-140 CMPSW instruction . . . . . . . . . . . . . . . . . . . 3-131 CMPXCHG instruction . . . . . . . . . . . . 3-144, 3-533 CMPXCHG16B instruction . . . . . . . . . . . . . . 3-147 CPUID bit . . . . . . . . . . . . . . . . . . . . . . . . 3-164 CMPXCHG8B instruction . . . . . . . . . . . . . . . 3-147 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-166 COMISD instruction . . . . . . . . . . . . . . . . . . . 3-150
Vol. 2B INDEX-1
INDEX
COMISS instruction . . . . . . . . . . . . . . . . . . . .3-153 Compatibility mode
introduction . . . . . . . . . . . . . . . . . . . . . . . . . .2-9 see 64-bit mode
summary table notation . . . . . . . . . . . . . . . .3-7 Compatibility, software . . . . . . . . . . . . . . . . . . . .1-3 Condition code flags, EFLAGS register . . . . .3-112 Condition code flags, x87 FPU status word
flags affected by instructions . . . . . . . . . . .3-14 setting . . . . . . . . . . . . . . . . 3-394, 3-396, 3-399 Conditional jump . . . . . . . . . . . . . . . . . . . . . .3-486 Conforming code segment . . . . . . . . . . . . . . .3-504 Constants (floating point), loading . . . . . . . . .3-331
Control registers, moving values to
and from. . . . . . . . . . . . . . . . . . . . .3-588 Cosine, x87 FPU operation . . . . . . . . 3-299, 3-369 CPL . . . . . . . . . . . . . . . . . . . . . . . . . . 3-107, 4-352 CPUID instruction. . . . . . . . . . . . . . . . 3-156, 3-167 36-bit page size extension . . . . . . . . . . . .3-167 APIC on-chip. . . . . . . . . . . . . . . . . . . . . . .3-166 basic CPUID information . . . . . . . . . . . . .3-157 cache and TLB characteristics . . . 3-157, 3-168 CLFLUSH flag. . . . . . . . . . . . . . . . . . . . . .3-167 CLFLUSH instruction cache line size . . . .3-163 CMPXCHG16B flag . . . . . . . . . . . . . . . . .3-164 CMPXCHG8B flag . . . . . . . . . . . . . . . . . .3-166 CPL qualified debug store . . . . . . . . . . . .3-164 debug extensions, CR4.DE . . . . . . . . . . .3-166 debug store supported . . . . . . . . . . . . . . .3-167 deterministic cache parameters leaf . . . . .3-158 extended function information. . . . . . . . . .3-159 feature information . . . . . . . . . . . . . . . . . .3-165 FPU on-chip . . . . . . . . . . . . . . . . . . . . . . .3-166 FSAVE flag . . . . . . . . . . . . . . . . . . . . . . . .3-167 FXRSTOR flag . . . . . . . . . . . . . . . . . . . . .3-167 HT technology flag . . . . . . . . . . . . . . . . . .3-167 IA-32e mode available . . . . . . . . . . . . . . .3-159 input limits for EAX . . . . . . . . . . . . . . . . . .3-160 L1 Context ID . . . . . . . . . . . . . . . . . . . . . .3-164 local APIC physical ID . . . . . . . . . . . . . . .3-163 machine check exception . . . . . . . . . . . . .3-166 memory type range registers . . . . . . . . . .3-166 microcode update signature . . . . . . . . . . .3-161 MONITOR/MWAIT flag . . . . . . . . . . . . . . .3-164 MONITOR/MWAIT leaf . . . . . . . . . . . . . . .3-158 page attribute table . . . . . . . . . . . . . . . . . .3-167 page size extension . . . . . . . . . . . . . . . . .3-166 physical address bits . . . . . . . . . . . . . . . .3-160 physical address extension. . . . . . . . . . . .3-166 processor brand index . . . . . . . . . 3-163, 3-171 processor brand string . . . . . . . . . 3-159, 3-171 processor serial number . . . . . . . . 3-157, 3-167 processor type field. . . . . . . . . . . . . . . . . .3-162 PTE global bit . . . . . . . . . . . . . . . . . . . . . .3-166 RDMSR flag . . . . . . . . . . . . . . . . . . . . . . .3-166 returned in EBX . . . . . . . . . . . . . . . . . . . .3-163 returned in ECX & EDX . . . . . . . . . . . . . .3-163 self snoop . . . . . . . . . . . . . . . . . . . . . . . . .3-167
INDEX-2 Vol. 2B
SpeedStep technology . . . . . . . . . . . . . . 3-164 SS2 extensions flag . . . . . . . . . . . . . . . . 3-167 SSE extensions flag . . . . . . . . . . . . . . . . 3-167 SSE3 extensions flag . . . . . . . . . . . . . . . 3-164 SYSENTER flag . . . . . . . . . . . . . . . . . . . 3-166 SYSEXIT flag . . . . . . . . . . . . . . . . . . . . . 3-166 thermal monitor . . . . . . . . . . . . . . . 3-164, 3-167 time stamp counter . . . . . . . . . . . . . . . . . 3-166 using CPUID . . . . . . . . . . . . . . . . . . . . . . 3-156 vendor ID string. . . . . . . . . . . . . . . . . . . . 3-160 version information . . . . . . 3-157, 3-161, 3-171 virtual 8086 Mode flag. . . . . . . . . . . . . . . 3-166 virtual address bits . . . . . . . . . . . . . . . . . 3-160 WRMSR flag . . . . . . . . . . . . . . . . . . . . . . 3-166
CQO instruction . . . . . . . . . . . . . . . . . . . . . . 3-244 CR0 control register . . . . . . . . . . . . . . . . . . . 4-274 CS register . . 3-86, 3-457, 3-475, 3-493, 3-583,
4-103
CVTDQ2PD instruction. . . . . . . . . . . . . . . . . 3-179 CVTDQ2PS instruction. . . . . . . . . . . . . . . . . 3-181 CVTPD2DQ instruction. . . . . . . . . . . . . . . . . 3-184 CVTPD2PI instruction. . . . . . . . . . . . . . . . . . 3-187 CVTPD2PS instruction . . . . . . . . . . . . . . . . . 3-190 CVTPI2PD instruction. . . . . . . . . . . . . . . . . . 3-193 CVTPI2PS instruction. . . . . . . . . . . . . . . . . . 3-196 CVTPS2DQ instruction. . . . . . . . . . . . . . . . . 3-199 CVTPS2PD instruction . . . . . . . . . . . . . . . . . 3-202 CVTPS2PI instruction. . . . . . . . . . . . . . . . . . 3-205 CVTSD2SI instruction. . . . . . . . . . . . . . . . . . 3-208 CVTSD2SS instruction . . . . . . . . . . . . . . . . . 3-211 CVTSI2SD instruction. . . . . . . . . . . . . . . . . . 3-214 CVTSI2SS instruction. . . . . . . . . . . . . . . . . . 3-217 CVTSS2SD instruction . . . . . . . . . . . . . . . . . 3-220 CVTSS2SI instruction. . . . . . . . . . . . . . . . . . 3-223 CVTTPD2DQ instruction . . . . . . . . . . . . . . . 3-229 CVTTPD2PI instruction . . . . . . . . . . . . . . . . 3-226 CVTTPS2DQ instruction. . . . . . . . . . . . . . . . 3-232 CVTTPS2PI instruction. . . . . . . . . . . . . . . . . 3-235 CVTTSD2SI instruction . . . . . . . . . . . . . . . . 3-238 CVTTSS2SI instruction. . . . . . . . . . . . . . . . . 3-241 CWD instruction . . . . . . . . . . . . . . . . . . . . . . 3-244 CWDE instruction . . . . . . . . . . . . . . . . . . . . . 3-102 C/C++ compiler intrinsics
compiler functional equivalents . . . . . . . . . . C-1 composite . . . . . . . . . . . . . . . . . . . . . . . . . C-32 description of. . . . . . . . . . . . . . . . . . . . . . . 3-11 lists of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-3
D
D (default operation size) flag, segment
descriptor . . . . . . . . 4-103, 4-108, 4-179 DAA instruction. . . . . . . . . . . . . . . . . . . . . . . 3-246 DAS instruction. . . . . . . . . . . . . . . . . . . . . . . 3-248 Debug registers, moving value to and from . 3-591 DEC instruction. . . . . . . . . . . . . . . . . . 3-250, 3-533 Denormalized finite number . . . . . . . . . . . . . 3-399
INDEX
DF (direction) flag, EFLAGS register |
. . . . 3-104, |
|
3-132, 3-454, 3-536, 3-658, 4-17, 4-245, |
||
4-289 |
|
|
Displacement (operand addressing) . . |
. . . . . . .2-4 |
|
DIV instruction . . |
. . . . . . . . . . . . . . . . . |
. . . . .3-252 |
Divide error exception (#DE) . . . . . . . . |
. . . . .3-252 |
|
DIVPD instruction |
. . . . . . . . . . . . . . . . . |
. . . . .3-256 |
DIVPS instruction . |
. . . . . . . . . . . . . . . . . |
. . . .3-259 |
DIVSD instruction. |
. . . . . . . . . . . . . . . . . |
. . . .3-262 |
DIVSS instruction . |
. . . . . . . . . . . . . . . . . |
. . . .3-265 |
DS register . . . . . |
3-132, 3-514, 3-535, 3-657, 4-16 |
E
EDI register . . . . |
. . . . . |
. . . . . 4-244, 4-289, 4-295 |
|
Effective address |
. . . . . |
. . . . . . . . . . . . |
. . . . .3-520 |
EFLAGS register |
|
|
|
condition codes. . . . |
. . . . . 3-115, 3-290, 3-296 |
||
flags affected by instructions . . . . . |
. . . . . .3-14 |
||
loading . . . . . |
. . . . . |
. . . . . . . . . . . . |
. . . . .3-502 |
popping . . . . . |
. . . . . |
. . . . . . . . . . . . |
. . . . .4-110 |
popping on return from interrupt . . . |
. . . . .3-475 |
||
pushing . . . . . |
. . . . . |
. . . . . . . . . . . . |
. . . . .4-184 |
pushing on interrupts . . . . . . . . . . . |
. . . . .3-457 |
||
saving . . . . . . |
. . . . . |
. . . . . . . . . . . . |
. . . . .4-233 |
status flags . . |
. . . . . |
3-118, 3-489, 4-251, 4-330 |
|
EIP register . . . . |
. . . . . |
. 3-86, 3-457, 3-475, 3-493 |
|
EMMS instruction . . . . . |
. . . . . . . . . . . . |
. . . . .3-268 |
|
Encodings |
|
|
|
See machine instructions, opcodes |
|
||
ENTER instruction . . . . |
. . . . . . . . . . . . |
. . . . .3-270 |
|
ES register . . . . . |
. . . . . |
. 3-514, 4-16, 4-244, 4-295 |
|
ESI register . . . . |
3-132, 3-535, 3-536, 3-657, 4-16, |
||
4-289 |
|
|
|
ESP register . . . . |
. . . . . |
. . . . . . . . . . . . |
3-86, 4-103 |
Exceptions |
|
|
|
BOUND range exceeded (#BR) . . . |
. . . . . .3-65 |
||
notation . . . . . |
. . . . . |
. . . . . . . . . . . . |
. . . . . . .1-5 |
overflow exception (#OF) . . . . . . . . |
. . . . .3-457 |
||
returning from |
. . . . . |
. . . . . . . . . . . . |
. . . . .3-475 |
Exponent, extracting from floating-point |
|
||
number. . . . . |
. . . . . . . . . . . . |
. . . . .3-415 |
|
Extract exponent and significand, x87 FPU |
|||
operation . . . |
. . . . . . . . . . . . |
. . . . .3-415 |
F
F2XM1 instruction . . . . . . . . . . . . . . . 3-273, 3-415 FABS instruction . . . . . . . . . . . . . . . . . . . . . .3-275 FADD instruction . . . . . . . . . . . . . . . . . . . . . .3-277 FADDP instruction . . . . . . . . . . . . . . . . . . . . .3-277 Far call, CALL instruction . . . . . . . . . . . . . . . . .3-86 Far pointer, loading . . . . . . . . . . . . . . . . . . . .3-514 Far return, RET instruction. . . . . . . . . . . . . . .4-214 FBLD instruction. . . . . . . . . . . . . . . . . . . . . . .3-281 FBSTP instruction . . . . . . . . . . . . . . . . . . . . .3-283 FCHS instruction . . . . . . . . . . . . . . . . . . . . . .3-286 FCLEX instruction . . . . . . . . . . . . . . . . . . . . .3-288
FCMOVcc instructions . . . . . . . . . . . . . . . . . 3-290 FCOM instruction . . . . . . . . . . . . . . . . . . . . . 3-292 FCOMI instruction. . . . . . . . . . . . . . . . . . . . . 3-296 FCOMIP instruction . . . . . . . . . . . . . . . . . . . 3-296 FCOMP instruction . . . . . . . . . . . . . . . . . . . . 3-292 FCOMPP instruction. . . . . . . . . . . . . . . . . . . 3-292 FCOS instruction . . . . . . . . . . . . . . . . . . . . . 3-299 FDECSTP instruction . . . . . . . . . . . . . . . . . . 3-301 FDIV instruction . . . . . . . . . . . . . . . . . . . . . . 3-303 FDIVP instruction . . . . . . . . . . . . . . . . . . . . . 3-303 FDIVR instruction . . . . . . . . . . . . . . . . . . . . . 3-307 FDIVRP instruction . . . . . . . . . . . . . . . . . . . . 3-307 Feature information, processor. . . . . . . . . . . 3-156 FFREE instruction . . . . . . . . . . . . . . . . . . . . 3-311 FIADD instruction . . . . . . . . . . . . . . . . . . . . . 3-277 FICOM instruction. . . . . . . . . . . . . . . . . . . . . 3-312 FICOMP instruction . . . . . . . . . . . . . . . . . . . 3-312 FIDIV instruction . . . . . . . . . . . . . . . . . . . . . . 3-303 FIDIVR instruction . . . . . . . . . . . . . . . . . . . . 3-307 FILD instruction . . . . . . . . . . . . . . . . . . . . . . 3-315 FIMUL instruction . . . . . . . . . . . . . . . . . . . . . 3-338 FINCSTP instruction. . . . . . . . . . . . . . . . . . . 3-317 FINIT instruction . . . . . . . . . . . . . . . . . . . . . . 3-319 FINIT/FNINIT instructions. . . . . . . . . . . . . . . 3-360 FIST instruction . . . . . . . . . . . . . . . . . . . . . . 3-321 FISTP instruction . . . . . . . . . . . . . . . . . . . . . 3-321 FISTTP instruction . . . . . . . . . . . . . . . . . . . . 3-325 FISUB instruction . . . . . . . . . . . . . . . . . . . . . 3-386 FISUBR instruction . . . . . . . . . . . . . . . . . . . . 3-390 FLD instruction . . . . . . . . . . . . . . . . . . . . . . . 3-328 FLD1 instruction . . . . . . . . . . . . . . . . . . . . . . 3-331 FLDCW instruction . . . . . . . . . . . . . . . . . . . . 3-333 FLDENV instruction . . . . . . . . . . . . . . . . . . . 3-335 FLDL2E instruction . . . . . . . . . . . . . . . . . . . . 3-331 FLDL2T instruction . . . . . . . . . . . . . . . . . . . . 3-331 FLDLG2 instruction. . . . . . . . . . . . . . . . . . . . 3-331 FLDLN2 instruction. . . . . . . . . . . . . . . . . . . . 3-331 FLDPI instruction . . . . . . . . . . . . . . . . . . . . . 3-331 FLDZ instruction . . . . . . . . . . . . . . . . . . . . . . 3-331 Floating point instructions
machine encodings . . . . . . . . . . . . . . . . . . B-80 Floating-point exceptions
SSE and SSE2 SIMD . . . . . . . . . . . . . . . . 3-16 x87 FPU . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16
Flushing
caches. . . . . . . . . . . . . . . . . . . . . . 3-471, 4-357 TLB entry. . . . . . . . . . . . . . . . . . . . . . . . . 3-473 FMUL instruction . . . . . . . . . . . . . . . . . . . . . 3-338 FMULP instruction . . . . . . . . . . . . . . . . . . . . 3-338 FNCLEX instruction . . . . . . . . . . . . . . . . . . . 3-288 FNINIT instruction. . . . . . . . . . . . . . . . . . . . . 3-319 FNOP instruction . . . . . . . . . . . . . . . . . . . . . 3-342 FNSAVE instruction . . . . . . . . . . . . . . . . . . . 3-360 FNSTCW instruction. . . . . . . . . . . . . . . . . . . 3-377 FNSTENV instruction . . . . . . . . . . . . . 3-335, 3-380 FNSTSW instruction . . . . . . . . . . . . . . . . . . . 3-383 FPATAN instruction . . . . . . . . . . . . . . . . . . . 3-343 FPREM instruction . . . . . . . . . . . . . . . . . . . . 3-346
Vol. 2B INDEX-3
INDEX
FPREM1 instruction . . . . . . . . . . . . . . . . . . . .3-349 FPTAN instruction . . . . . . . . . . . . . . . . . . . . .3-352 FRNDINT instruction . . . . . . . . . . . . . . . . . . .3-355 FRSTOR instruction . . . . . . . . . . . . . . . . . . . .3-357 FS register . . . . . . . . . . . . . . . . . . . . . . . . . . .3-514 FSAVE instruction . . . . . . . . . . . . . . . . . . . . .3-360 FSAVE/FNSAVE instructions. . . . . . . . . . . . .3-357 FSCALE instruction . . . . . . . . . . . . . . . . . . . .3-364 FSIN instruction . . . . . . . . . . . . . . . . . . . . . . .3-367 FSINCOS instruction . . . . . . . . . . . . . . . . . . .3-369 FSQRT instruction . . . . . . . . . . . . . . . . . . . . .3-372 FST instruction . . . . . . . . . . . . . . . . . . . . . . . .3-374 FSTCW instruction . . . . . . . . . . . . . . . . . . . . .3-377 FSTENV instruction . . . . . . . . . . . . . . . . . . . .3-380 FSTP instruction. . . . . . . . . . . . . . . . . . . . . . .3-374 FSTSW instruction . . . . . . . . . . . . . . . . . . . . .3-383 FSUB instruction . . . . . . . . . . . . . . . . . . . . . .3-386 FSUBP instruction . . . . . . . . . . . . . . . . . . . . .3-386 FSUBR instruction . . . . . . . . . . . . . . . . . . . . .3-390 FSUBRP instruction . . . . . . . . . . . . . . . . . . . .3-390 FTST instruction. . . . . . . . . . . . . . . . . . . . . . .3-394 FUCOM instruction. . . . . . . . . . . . . . . . . . . . .3-396 FUCOMI instruction . . . . . . . . . . . . . . . . . . . .3-296 FUCOMIP instruction . . . . . . . . . . . . . . . . . . .3-296 FUCOMP instruction . . . . . . . . . . . . . . . . . . .3-396 FUCOMPP instruction . . . . . . . . . . . . . . . . . .3-396 FXAM instruction . . . . . . . . . . . . . . . . . . . . . .3-399 FXCH instruction . . . . . . . . . . . . . . . . . . . . . .3-401 FXRSTOR instruction. . . . . . . . . . . . . . . . . . .3-403
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-167 FXSAVE instruction . . . . . . . . . . . . . . . . . . . .3-406 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-167 FXTRACT instruction . . . . . . . . . . . . . 3-364, 3-415 FYL2X instruction. . . . . . . . . . . . . . . . . . . . . .3-417 FYL2XP1 instruction . . . . . . . . . . . . . . . . . . .3-419
G
GDT (global descriptor table) . . . . . . . 3-526, 3-529 GDTR (global descriptor table register) . . . . 3-526,
4-254 General-purpose instructions
64-bit encodings . . . . . . . . . . . . . . . . . . . . B-23 non-64-bit encodings . . . . . . . . . . . . . . . . B-10
General-purpose registers
moving value to and from . . . . . . . . . . . . .3-583 popping all . . . . . . . . . . . . . . . . . . . . . . . .4-108 pushing all. . . . . . . . . . . . . . . . . . . . . . . . .4-182 GS register . . . . . . . . . . . . . . . . . . . . . . . . . . .3-514
H
HADDPD instruction. . . . . . . . . . . . . . 3-422, 3-423 HADDPS instruction. . . . . . . . . . . . . . . . . . . .3-426 Hexadecimal numbers . . . . . . . . . . . . . . . . . . . .1-4 HLT instruction . . . . . . . . . . . . . . . . . . . . . . . .3-430 HSUBPD instruction. . . . . . . . . . . . . . . . . . . .3-432
INDEX-4 Vol. 2B
HSUBPS instruction . . . . . . . . . . . . . . . . . . . 3-436 Hyper-Threading Technology
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-167
I
IA-32e mode
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-159 introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2-9 see 64-bit mode
see compability mode
IA32_SYSENTER_CS MSR. . . . . . . . 4-323, 4-326 IA32_SYSENTER_EIP MSR . . . . . . . . . . . . 4-323 IA32_SYSENTER_ESP MSR. . . . . . . . . . . . 4-323 IDIV instruction . . . . . . . . . . . . . . . . . . . . . . . 3-440 IDT (interrupt descriptor table) . . . . . . 3-458, 3-526 IDTR (interrupt descriptor table
register) . . . . . . . . . . . . . . . 3-526, 4-269 IF (interrupt enable) flag, EFLAGS
register . . . . . . . . . . . . . . . . 3-107, 4-290 Immediate operands. . . . . . . . . . . . . . . . . . . . . 2-4 IMUL instruction . . . . . . . . . . . . . . . . . . . . . . 3-444 IN instruction. . . . . . . . . . . . . . . . . . . . . . . . . 3-449 INC instruction . . . . . . . . . . . . . . . . . . 3-451, 3-533 Index (operand addressing) . . . . . . . . . . . . . . . 2-4 Initialization x87 FPU . . . . . . . . . . . . . . . . . . 3-319 INS instruction . . . . . . . . . . . . . . . . . . 3-453, 4-211 INSB instruction . . . . . . . . . . . . . . . . . . . . . . 3-453 INSD instruction . . . . . . . . . . . . . . . . . . . . . . 3-453 Instruction format
base field. . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 description of reference information . . . . . . 3-1 displacement . . . . . . . . . . . . . . . . . . . . . . . . 2-4 illustration of . . . . . . . . . . . . . . . . . . . . . . . . 2-1 immediate . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 index field . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 Mod field . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 ModR/M byte. . . . . . . . . . . . . . . . . . . . . . . . 2-4 opcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 operands . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4 prefixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 reg/opcode field. . . . . . . . . . . . . . . . . . . . . . 2-4 r/m field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 scale field . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 SIB byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 See also: machine instructions, opcodes
Instruction reference, nomenclature . . . . . . . . . 3-1 Instruction set, reference . . . . . . . . . . . . . . . . . 3-1 INSW instruction. . . . . . . . . . . . . . . . . . . . . . 3-453 INT 3 instruction . . . . . . . . . . . . . . . . . . . . . . 3-457 Integer, storing, x87 FPU data type . . . . . . . 3-321 Intel NetBurst microarchitecture . . . . . . . . . . . . 1-1 Intel Xeon processor. . . . . . . . . . . . . . . . . . . . . 1-1 Inter-privilege level
call, CALL instruction . . . . . . . . . . . . . . . . 3-86 return, RET instruction . . . . . . . . . . . . . . 4-214
Interrupts
interrupt vector 4 . . . . . . . . . . . . . . . . . . . 3-457
INDEX
returning from . . . . . . . . . . . . . . . . . . . . . .3-475 software . . . . . . . . . . . . . . . . . . . . . . . . . .3-457 INTn instruction . . . . . . . . . . . . . . . . . . . . . . .3-457 INTO instruction . . . . . . . . . . . . . . . . . . . . . . .3-457
Intrinsics
compiler functional equivalents. . . . . . . . . . C-1 composite . . . . . . . . . . . . . . . . . . . . . . . . . C-32 description of . . . . . . . . . . . . . . . . . . . . . . .3-11 list of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-3
INVD instruction . . . . . . . . . . . . . . . . . . . . . . .3-471 INVLPG instruction. . . . . . . . . . . . . . . . . . . . .3-473 IOPL (I/O privilege level) field, EFLAGS
register . . . . . . . . . . 3-107, 4-184, 4-290 IRET instruction . . . . . . . . . . . . . . . . . . . . . . .3-475 IRETD instruction . . . . . . . . . . . . . . . . . . . . . .3-475
J
Jcc instructions. . . . . . . . . . . . . . . . . . . . . . . .3-486 JMP instruction. . . . . . . . . . . . . . . . . . . . . . . .3-492 Jump operation . . . . . . . . . . . . . . . . . . . . . . .3-492
L
L1 Context ID . . . . . . . . . . . . . . . . . . . . . . . . .3-164 LAHF instruction. . . . . . . . . . . . . . . . . . . . . . .3-502 LAR instruction. . . . . . . . . . . . . . . . . . . . . . . .3-504 LDDQU instruction . . . . . . . . . . . . . . . . . . . . .3-508 LDMXCSR instruction . . . . . . . . . . . . . . . . . .3-511 LDS instruction. . . . . . . . . . . . . . . . . . . . . . . .3-514 LDT (local descriptor table) . . . . . . . . . . . . . .3-529 LDTR (local descriptor table
register) . . . . . . . . . . . . . . . 3-529, 4-272 LEA instruction . . . . . . . . . . . . . . . . . . . . . . . .3-520 LEAVE instruction . . . . . . . . . . . . . . . . . . . . .3-523 LES instruction . . . . . . . . . . . . . . . . . . . . . . . .3-514 LFENCE instruction . . . . . . . . . . . . . . . . . . . .3-525 LFS instruction . . . . . . . . . . . . . . . . . . . . . . . .3-514 LGDT instruction . . . . . . . . . . . . . . . . . . . . . .3-526 LGS instruction. . . . . . . . . . . . . . . . . . . . . . . .3-514 LIDT instruction . . . . . . . . . . . . . . . . . . . . . . .3-526 LLDT instruction . . . . . . . . . . . . . . . . . . . . . . .3-529 LMSW instruction . . . . . . . . . . . . . . . . . . . . . .3-531 Load effective address operation . . . . . . . . . .3-520 LOCK prefix . . . 3-27, 3-30, 3-52, 3-76, 3-79, 3-82,
3-144, 3-250, 3-451, 3-533, 4-2, 4-5, 4-8, 4-242, 4-302, 4-361, 4-363, 4-369
Locking operation. . . . . . . . . . . . . . . . . . . . . .3-533 LODS instruction . . . . . . . . . . . . . . . . 3-535, 4-211 LODSB instruction . . . . . . . . . . . . . . . . . . . . .3-535 LODSD instruction . . . . . . . . . . . . . . . . . . . . .3-535 LODSQ instruction . . . . . . . . . . . . . . . . . . . . .3-535 LODSW instruction. . . . . . . . . . . . . . . . . . . . .3-535 Log epsilon, x87 FPU operation. . . . . . . . . . .3-417 Log (base 2), x87 FPU operation . . . . . . . . . .3-419 LOOP instructions . . . . . . . . . . . . . . . . . . . . .3-538 LOOPcc instructions . . . . . . . . . . . . . . . . . . .3-538
LSL instruction . . . . . . . . . . . . . . . . . . . . . . . 3-541 LSS instruction . . . . . . . . . . . . . . . . . . . . . . . 3-514 LTR instruction . . . . . . . . . . . . . . . . . . . . . . . 3-545
M
Machine check architecture
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-166 description. . . . . . . . . . . . . . . . . . . . . . . . 3-166
Machine instructions
64-bit mode . . . . . . . . . . . . . . . . . . . . . . . . . B-1 condition test (tttn) field . . . . . . . . . . . . . . . . B-7 direction bit (d) field. . . . . . . . . . . . . . . . . . . B-8 floating-point instruction encodings. . . . . . B-80 general description . . . . . . . . . . . . . . . . . . . B-1 general-purpose encodings. . . . . . . B-10–B-47 legacy prefixes . . . . . . . . . . . . . . . . . . . . . . B-2 MMX encodings . . . . . . . . . . . . . . . B-48–B-52 opcode fields . . . . . . . . . . . . . . . . . . . . . . . . B-2 operand size (w) bit. . . . . . . . . . . . . . . . . . . B-5 P6 family encodings . . . . . . . . . . . . . . . . . B-52 Pentium processor family encodings . . . . B-47 reg (reg) field. . . . . . . . . . . . . . . . . . . . B-3, B-4 REX prefixes . . . . . . . . . . . . . . . . . . . . . . . . B-2 segment register (sreg) field . . . . . . . . . . . . B-6 sign-extend (s) bit . . . . . . . . . . . . . . . . . . . . B-5 SIMD 64-bit encodings . . . . . . . . . . . . . . . B-48 special 64-bit encodings . . . . . . . . . . . . . . B-77 special fields . . . . . . . . . . . . . . . . . . . . . . . . B-2 special-purpose register (eee) field. . . . . . . B-7 SSE encodings . . . . . . . . . . . . . . . . B-53–B-60 SSE2 encodings . . . . . . . . . . . . . . . B-61–B-74 SSE3 encodings . . . . . . . . . . . . . . . B-75–B-76 See also: opcodes
Machine status word, CR0 register . . 3-531, 4-274 MASKMOVDQU instruction . . . . . . . . . . . . . 3-548 MASKMOVQ instruction . . . . . . . . . . . . . . . . 3-551 MAXPD instruction . . . . . . . . . . . . . . . . . . . . 3-554 MAXPS instruction . . . . . . . . . . . . . . . . . . . . 3-557 MAXSD instruction . . . . . . . . . . . . . . . . . . . . 3-560 MAXSS instruction . . . . . . . . . . . . . . . . . . . . 3-563 MFENCE instruction . . . . . . . . . . . . . . . . . . . 3-566 Microcode update signature . . . . . . . . . . . . . 3-161 MINPD instruction. . . . . . . . . . . . . . . . . . . . . 3-567 MINPS instruction. . . . . . . . . . . . . . . . . . . . . 3-570 MINSD instruction. . . . . . . . . . . . . . . . . . . . . 3-573 MINSS instruction. . . . . . . . . . . . . . . . . . . . . 3-576 MMX instructions
CPUID flag for technology. . . . . . . . . . . . 3-167 encodings . . . . . . . . . . . . . . . . . . . . . . . . . B-48 Mod field, instruction format . . . . . . . . . . . . . . . 2-4 Model & family information . . . . . . . . . 3-161, 3-171 ModR/M byte . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 16-bit addressing forms. . . . . . . . . . . . . . . . 2-6 32-bit addressing forms of. . . . . . . . . . . . . . 2-7 description of. . . . . . . . . . . . . . . . . . . . . . . . 2-4 format of . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Vol. 2B INDEX-5
INDEX
MONITOR instruction. . . . . . . . . . . . . . . . . . .3-579 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-164 MOV instruction . . . . . . . . . . . . . . . . . . . . . . .3-582 MOV instruction (control registers). . . . . . . . .3-588 MOV instruction (debug registers) . . . . . . . . .3-591 MOVAPD instruction . . . . . . . . . . . . . . . . . . .3-593 MOVAPS instruction . . . . . . . . . . . . . . . . . . .3-596 MOVD instruction . . . . . . . . . . . . . . . . . . . . . .3-599 MOVDDUP instruction . . . . . . . . . . . . . . . . . .3-603 MOVDQ2Q instruction . . . . . . . . . . . . . . . . . .3-610 MOVDQA instruction . . . . . . . . . . . . . . . . . . .3-606 MOVDQU instruction . . . . . . . . . . . . . . . . . . .3-608 MOVHLPS instruction . . . . . . . . . . . . . . . . . .3-612 MOVHPD instruction . . . . . . . . . . . . . . . . . . .3-614 MOVHPS instruction . . . . . . . . . . . . . . . . . . .3-617 MOVLHP instruction. . . . . . . . . . . . . . . . . . . .3-620 MOVLHPS instruction . . . . . . . . . . . . . . . . . .3-620 MOVLPD instruction. . . . . . . . . . . . . . . . . . . .3-622 MOVLPS instruction. . . . . . . . . . . . . . . . . . . .3-625 MOVMSKPD instruction. . . . . . . . . . . . . . . . .3-628 MOVMSKPS instruction . . . . . . . . . . . . . . . . .3-630 MOVNTDQ instruction . . . . . . . . . . . . . . . . . .3-632 MOVNTI instruction . . . . . . . . . . . . . . . . . . . .3-635 MOVNTPD instruction . . . . . . . . . . . . . . . . . .3-637 MOVNTPS instruction . . . . . . . . . . . . . . . . . .3-640 MOVNTQ instruction . . . . . . . . . . . . . . . . . . .3-643 MOVQ instruction. . . . . . . . . . . . . . . . 3-599, 3-652 MOVQ2DQ instruction . . . . . . . . . . . . . . . . . .3-655 MOVS instruction . . . . . . . . . . . . . . . . 3-657, 4-211 MOVSB instruction. . . . . . . . . . . . . . . . . . . . .3-657 MOVSD instruction. . . . . . . . . . . . . . . 3-657, 3-661 MOVSHDUP instruction . . . . . . . . . . . . . . . . .3-646 MOVSLDUP instruction . . . . . . . . . . . . . . . . .3-649 MOVSQ instruction . . . . . . . . . . . . . . . . . . . .3-657 MOVSS instruction. . . . . . . . . . . . . . . . . . . . .3-664 MOVSW instruction . . . . . . . . . . . . . . . . . . . .3-657 MOVSX instruction. . . . . . . . . . . . . . . . . . . . .3-667 MOVSXD instruction . . . . . . . . . . . . . . . . . . .3-667 MOVUPD instruction . . . . . . . . . . . . . . . . . . .3-669 MOVUPS instruction . . . . . . . . . . . . . . . . . . .3-672 MOVZX instruction . . . . . . . . . . . . . . . . . . . . .3-675
MSRs (model specific registers)
reading . . . . . . . . . . . . . . . . . . . . . . . . . . .4-202 writing . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-359 MUL instruction . . . . . . . . . . . . . . . . . . 3-22, 3-677 MULPD instruction . . . . . . . . . . . . . . . . . . . . .3-680 MULPS instruction . . . . . . . . . . . . . . . . . . . . .3-683 MULSD instruction . . . . . . . . . . . . . . . . . . . . .3-686 MULSS instruction . . . . . . . . . . . . . . . . . . . . .3-689 MWAIT instruction . . . . . . . . . . . . . . . . . . . . .3-692 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-164
N
NaN. testing for . . . . . . . . . . . . . . . . . . . . . . .3-394 Near
call, CALL instruction . . . . . . . . . . . . . . . . .3-85 return, RET instruction . . . . . . . . . . . . . . .4-214
INDEX-6 Vol. 2B
NEG instruction . . . . . . . . . . . . . . . . . . . 3-533, 4-2 NetBurst microarchitecture (see Intel NetBurst
microarchitecture) Nomenclature, used in instruction
reference pages . . . . . . . . . . . . . . . . 3-1 NOP instruction . . . . . . . . . . . . . . . . . . . . . . . . 4-4 NOT instruction. . . . . . . . . . . . . . . . . . . . 3-533, 4-5 Notation
bit and byte order . . . . . . . . . . . . . . . . . . . . 1-2 exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5 hexadecimal and binary numbers . . . . . . . . 1-4 instruction operands . . . . . . . . . . . . . . . . . . 1-4 reserved bits . . . . . . . . . . . . . . . . . . . . . . . . 1-3 segmented addressing . . . . . . . . . . . . . . . . 1-4
Notational conventions . . . . . . . . . . . . . . . . . . . 1-2 NT (nested task) flag, EFLAGS register . . . . 3-475
O
OF (carry) flag, EFLAGS register . . . . . . . . . 3-445 OF (overflow) flag, EFLAGS register . 3-29, 3-457,
3-677, 4-242, 4-257, 4-260, 4-302
Opcode
escape instructions . . . . . . . . . . . . . . . . . . A-22 map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1
Opcode extensions
description. . . . . . . . . . . . . . . . . . . . . . . . . A-18 Opcode format . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 Opcode integer instructions
one-byte . . . . . . . . . . . . . . . . . . . . . . . . . . . A-4 one-byte opcode map . . . . . . . . . . . . . . . . . A-9 one-byte opcodes . . . . . . . . . . . . . . . A-8, A-10 two-byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . A-5 two-byte opcode map . . . . . . . . . . . . . . . . A-17 two-byte opcodes . . . . . . . . . . . . . . A-12, A-16
Opcode key abbreviations . . . . . . . . . . . . . . . . A-2 Opcodes
look-up examples . . . . . . . . . . . . . . . . . . . A-22 Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4 OR instruction. . . . . . . . . . . . . . . . . . . . . 3-533, 4-7 ORPD instruction . . . . . . . . . . . . . . . . . . . . . . 4-10 ORPS instruction . . . . . . . . . . . . . . . . . . . . . . 4-12 OUT instruction. . . . . . . . . . . . . . . . . . . . . . . . 4-14 OUTS instruction . . . . . . . . . . . . . . . . . 4-16, 4-211 OUTSB instruction . . . . . . . . . . . . . . . . . . . . . 4-16 OUTSD instruction . . . . . . . . . . . . . . . . . . . . . 4-16 OUTSW instruction. . . . . . . . . . . . . . . . . . . . . 4-16 Overflow exception (#OF). . . . . . . . . . . . . . . 3-457
P
P6 family processors
description of. . . . . . . . . . . . . . . . . . . . . . . . 1-1 machine encodings . . . . . . . . . . . . . . . . . . B-52 PACKSSDW instruction . . . . . . . . . . . . . . . . . 4-21 PACKSSWB instruction . . . . . . . . . . . . . . . . . 4-21 PACKUSWB instruction . . . . . . . . . . . . . . . . . 4-25 PADDB instruction . . . . . . . . . . . . . . . . . . . . . 4-29
INDEX
PADDD instruction . . . . . . . . . . . . . . . . . . . . . .4-29 PADDQ instruction . . . . . . . . . . . . . . . . . . . . . .4-33 PADDSB instruction . . . . . . . . . . . . . . . . . . . . .4-36 PADDSW instruction . . . . . . . . . . . . . . . . . . . .4-36 PADDUSB instruction . . . . . . . . . . . . . . . . . . .4-40 PADDUSW instruction . . . . . . . . . . . . . . . . . . .4-40 PADDW instruction . . . . . . . . . . . . . . . . . . . . .4-29 PAND instruction . . . . . . . . . . . . . . . . . . . . . . .4-44 PANDN instruction . . . . . . . . . . . . . . . . . . . . . .4-47 PAUSE instruction . . . . . . . . . . . . . . . . . . . . . .4-50 PAVGB instruction . . . . . . . . . . . . . . . . . . . . . .4-51 PAVGW instruction . . . . . . . . . . . . . . . . . . . . .4-51 PCE flag, CR4 register. . . . . . . . . . . . . . . . . .4-204 PCMPEQB instruction . . . . . . . . . . . . . . . . . . .4-54 PCMPEQD instruction . . . . . . . . . . . . . . . . . . .4-54 PCMPEQW instruction. . . . . . . . . . . . . . . . . . .4-54 PCMPGTB instruction . . . . . . . . . . . . . . . . . . .4-58 PCMPGTD instruction . . . . . . . . . . . . . . . . . . .4-58 PCMPGTW instruction . . . . . . . . . . . . . . . . . . .4-58 PE (protection enable) flag, CR0 register . . .3-531 Pending break enable . . . . . . . . . . . . . . . . . .3-167 Pentium 4 processor . . . . . . . . . . . . . . . . . . . . .1-1 Pentium II processor . . . . . . . . . . . . . . . . . . . . .1-1 Pentium III processor . . . . . . . . . . . . . . . . . . . . .1-1 Pentium M processor . . . . . . . . . . . . . . . . . . . . .1-1 Pentium Pro processor. . . . . . . . . . . . . . . . . . . .1-1 Pentium processor . . . . . . . . . . . . . . . . . . . . . . .1-1 Pentium processor family processors
machine encodings. . . . . . . . . . . . . . . . . . B-47 Performance-monitoring counters
reading . . . . . . . . . . . . . . . . . . . . . . . . . . .4-204 PEXTRW instruction . . . . . . . . . . . . . . . . . . . .4-63 Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-331 PINSRW instruction . . . . . . . . . . . . . . . . . . . . .4-66 PMADDWD instruction. . . . . . . . . . . . . . . . . . .4-69 PMAXSW instruction . . . . . . . . . . . . . . . . . . . .4-73 PMAXUB instruction. . . . . . . . . . . . . . . . . . . . .4-76 PMINSW instruction . . . . . . . . . . . . . . . . . . . . .4-79 PMINUB instruction . . . . . . . . . . . . . . . . . . . . .4-82 PMOVMSKB instruction . . . . . . . . . . . . . . . . . .4-85 PMULHUW instruction . . . . . . . . . . . . . . . . . . .4-87 PMULHW instruction . . . . . . . . . . . . . . . . . . . .4-91 PMULLW instruction . . . . . . . . . . . . . . . . . . . .4-95 PMULUDQ instruction . . . . . . . . . . . . . . . . . . .4-99 POP instruction . . . . . . . . . . . . . . . . . . . . . . .4-102 POPA instruction . . . . . . . . . . . . . . . . . . . . . .4-108 POPAD instruction . . . . . . . . . . . . . . . . . . . . .4-108 POPF instruction . . . . . . . . . . . . . . . . . . . . . .4-110 POPFD instruction . . . . . . . . . . . . . . . . . . . . .4-110 POPFQ instruction . . . . . . . . . . . . . . . . . . . . .4-110 POR instruction . . . . . . . . . . . . . . . . . . . . . . .4-114 PREFETCHh instruction . . . . . . . . . . . . . . . .4-117 Prefixes
Address-size override prefix . . . . . . . . . . . . .2-2 Branch hints . . . . . . . . . . . . . . . . . . . . . . . . .2-2 branch hints . . . . . . . . . . . . . . . . . . . . . . . . .2-2 instruction, description of . . . . . . . . . . . . . . .2-2 legacy prefix encodings . . . . . . . . . . . . . . . B-2
LOCK . . . . . . . . . . . . . . . . . . . . . . . . 2-2, 3-533 Operand-size override prefix. . . . . . . . . . . . 2-2 REP or REPE/REPZ . . . . . . . . . . . . . . . . . . 2-2 REPNE/REPNZ. . . . . . . . . . . . . . . . . . . . . . 2-2 REP/REPE/REPZ/REPNE/REPNZ. . . . . 4-209 REX prefix encodings . . . . . . . . . . . . . . . . . B-2 Segment override prefixes . . . . . . . . . . . . . 2-2
PSADBW instruction. . . . . . . . . . . . . . . . . . . 4-119 PSHUFD instruction . . . . . . . . . . . . . . . . . . . 4-123 PSHUFHW instruction . . . . . . . . . . . . . . . . . 4-126 PSHUFLW instruction. . . . . . . . . . . . . . . . . . 4-129 PSHUFW instruction. . . . . . . . . . . . . . . . . . . 4-132 PSLLD instruction. . . . . . . . . . . . . . . . . . . . . 4-137 PSLLDQ instruction . . . . . . . . . . . . . . . . . . . 4-135 PSLLQ instruction. . . . . . . . . . . . . . . . . . . . . 4-137 PSLLW instruction . . . . . . . . . . . . . . . . . . . . 4-137 PSRAD instruction . . . . . . . . . . . . . . . . . . . . 4-142 PSRAW instruction . . . . . . . . . . . . . . . . . . . . 4-142 PSRLD instruction . . . . . . . . . . . . . . . . . . . . 4-148 PSRLDQ instruction . . . . . . . . . . . . . . . . . . . 4-146 PSRLQ instruction . . . . . . . . . . . . . . . . . . . . 4-148 PSRLW instruction . . . . . . . . . . . . . . . . . . . . 4-148 PSUBB instruction . . . . . . . . . . . . . . . . . . . . 4-153 PSUBD instruction . . . . . . . . . . . . . . . . . . . . 4-153 PSUBQ instruction . . . . . . . . . . . . . . . . . . . . 4-157 PSUBSB instruction . . . . . . . . . . . . . . . . . . . 4-160 PSUBSW instruction. . . . . . . . . . . . . . . . . . . 4-160 PSUBUSB instruction . . . . . . . . . . . . . . . . . . 4-164 PSUBUSW instruction . . . . . . . . . . . . . . . . . 4-164 PSUBW instruction . . . . . . . . . . . . . . . . . . . . 4-153 PUNPCKHBW instruction. . . . . . . . . . . . . . . 4-168 PUNPCKHDQ instruction . . . . . . . . . . . . . . . 4-168 PUNPCKHQDQ instruction . . . . . . . . . . . . . 4-168 PUNPCKHWD instruction. . . . . . . . . . . . . . . 4-168 PUNPCKLBW instruction . . . . . . . . . . . . . . . 4-173 PUNPCKLDQ instruction . . . . . . . . . . . . . . . 4-173 PUNPCKLQDQ instruction . . . . . . . . . . . . . . 4-173 PUNPCKLWD instruction . . . . . . . . . . . . . . . 4-173 PUSH instruction . . . . . . . . . . . . . . . . . . . . . 4-178 PUSHA instruction . . . . . . . . . . . . . . . . . . . . 4-182 PUSHAD instruction . . . . . . . . . . . . . . . . . . . 4-182 PUSHF instruction . . . . . . . . . . . . . . . . . . . . 4-184 PUSHFD instruction . . . . . . . . . . . . . . . . . . . 4-184 PXOR instruction . . . . . . . . . . . . . . . . . . . . . 4-187
R
RC (rounding control) field, x87 FPU
control word . . . . . . 3-322, 3-331, 3-374 RCL instruction . . . . . . . . . . . . . . . . . . . . . . . 4-190 RCPPS instruction . . . . . . . . . . . . . . . . . . . . 4-196 RCPSS instruction . . . . . . . . . . . . . . . . . . . . 4-199 RCR instruction . . . . . . . . . . . . . . . . . . . . . . 4-190 RDMSR instruction . . . . . . . . . 4-202, 4-204, 4-207
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . 3-166 RDPMC instruction . . . . . . . . . . . . . . . . . . . . 4-204 RDTSC instruction . . . . . . . . . . . . . . . . . . . . 4-207 Reg/opcode field, instruction format . . . . . . . . . 2-4
Vol. 2B INDEX-7
INDEX
Related literature . . . . . . . . . . . . . . . . . . . . . . . .1-7 Remainder, x87 FPU operation . . . . . . . . . . .3-349 REP/REPE/REPZ/REPNE/REPNZ
prefixes . . . . . 3-132, 3-454, 4-17, 4-209
Reserved
use of reserved bits . . . . . . . . . . . . . . . . . . .1-3 RET instruction. . . . . . . . . . . . . . . . . . . . . . . .4-214 REX prefixes
addressing modes . . . . . . . . . . . . . . . . . . .2-11 and INC/DEC . . . . . . . . . . . . . . . . . . . . . . .2-10 encodings . . . . . . . . . . . . . . . . . . . . . . 2-10, B-2 field names . . . . . . . . . . . . . . . . . . . . . . . . .2-11 ModR/M byte . . . . . . . . . . . . . . . . . . . . . . .2-10 overview . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-9 REX.B . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10 REX.R. . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10 REX.W . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10 special encodings . . . . . . . . . . . . . . . . . . . .2-13
RIP-relative addressing . . . . . . . . . . . . . . . . . .2-14 ROL instruction . . . . . . . . . . . . . . . . . . . . . . .4-190 ROR instruction . . . . . . . . . . . . . . . . . . . . . . .4-190 Rounding, round to integer, x87 FPU
operation . . . . . . . . . . . . . . . . . . . .3-355 RPL field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-63 RSM instruction . . . . . . . . . . . . . . . . . . . . . . .4-225 RSQRTPS instruction . . . . . . . . . . . . . . . . . .4-227 RSQRTSS instruction . . . . . . . . . . . . . . . . . .4-230 R/m field, instruction format . . . . . . . . . . . . . . . .2-4
S
SAL instruction . . . . . . . . . . . . . . . . . . . . . . . .4-235 SAR instruction . . . . . . . . . . . . . . . . . . . . . . .4-235 SBB instruction. . . . . . . . . . . . . . . . . . 3-533, 4-241 Scale (operand addressing) . . . . . . . . . . . . . . . .2-4 Scale, x87 FPU operation . . . . . . . . . . . . . . .3-364 Scan string instructions . . . . . . . . . . . . . . . . .4-244 SCAS instruction . . . . . . . . . . . . . . . . 4-211, 4-244 SCASB instruction . . . . . . . . . . . . . . . . . . . . .4-244 SCASD instruction . . . . . . . . . . . . . . . . . . . . .4-244 SCASW instruction. . . . . . . . . . . . . . . . . . . . .4-244 Segment
descriptor, segment limit. . . . . . . . . . . . . .3-541 limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-541 registers, moving values to and from . . . .3-583 selector, RPL field. . . . . . . . . . . . . . . . . . . .3-63 Segmented addressing . . . . . . . . . . . . . . . . . . .1-4 Self Snoop . . . . . . . . . . . . . . . . . . . . . . . . . . .3-167 SETcc instructions . . . . . . . . . . . . . . . . . . . . .4-249 SF (sign) flag, EFLAGS register. . . . . . . . . . . .3-29 SFENCE instruction . . . . . . . . . . . . . . . . . . . .4-253 SGDT instruction . . . . . . . . . . . . . . . . . . . . . .4-254 SHAF instruction . . . . . . . . . . . . . . . . . . . . . .4-233 Shift instructions. . . . . . . . . . . . . . . . . . . . . . .4-235 SHL instruction. . . . . . . . . . . . . . . . . . . . . . . .4-235 SHLD instruction . . . . . . . . . . . . . . . . . . . . . .4-257 SHR instruction . . . . . . . . . . . . . . . . . . . . . . .4-235 SHRD instruction . . . . . . . . . . . . . . . . . . . . . .4-260
INDEX-8 Vol. 2B
SHUFPD instruction . . . . . . . . |
. . . . . . . . . . . |
4-263 |
SHUFPS instruction . . . . . . . . . |
. . . . . . . . . . |
4-266 |
SIB byte . . . . . . . . . . . . . . . . . . |
. . . . . . . . . . |
. . 2-4 |
32-bit addressing forms of. . |
. . . . . . . . . . . |
. 2-8 |
description of. . . . . . . . . . . . |
. . . . . . . . . . . |
. 2-4 |
format of . . . . . . . . . . . . . . . |
. . . . . . . . . . . |
. 2-1 |
SIDT instruction . . . . . . . . . . . . |
. . . . . 4-254, 4-269 |
|
Significand, extracting from floating-point |
|
|
number . . . . . . . . . . . |
. . . . . . . . . . |
3-415 |
SIMD floating-point exceptions, unmasking, |
|
|
effects of. . . . . . . . . . |
. . . . . . . . . . |
3-511 |
Sine, x87 FPU operation . . . . . |
. . . . . 3-367, 3-369 |
|
SLDT instruction . . . . . . . . . . . . |
. . . . . . . . . . |
4-272 |
SMSW instruction . . . . . . . . . . . |
. . . . . . . . . . |
4-274 |
SpeedStep technology . . . . . . . |
. . . . . . . . . . |
3-164 |
SQRTPD instruction . . . . . . . . . |
. . . . . . . . . . |
4-276 |
SQRTPS instruction . . . . . . . . . |
. . . . . . . . . . |
4-279 |
SQRTSD instruction . . . . . . . . . |
. . . . . . . . . . |
4-282 |
SQRTSS instruction . . . . . . . . . |
. . . . . . . . . . |
4-285 |
Square root, Fx87 PU operation. . . . . . . . . . |
3-372 |
|
SS register . . . . . . . . . . . . . . . |
3-514, 3-583, 4-103 |
|
SS3 extensions |
|
|
event mgmt instruction encodings. . . . . . . |
B-76 |
|
floating-point instruction encodings. . . . . . |
B-75 |
|
SSE extensions |
|
|
cacheability instruction encodings. . . . . . . |
B-60 |
|
CPUID flag . . . . . . . . . . . . . |
. . . . . . . . . . |
3-167 |
floating-point encodings . . . |
. . . . . . . . . . . |
B-53 |
instruction encodings . . . . . |
. . . . . . . . . . . |
B-53 |
integer instruction encodings . . . . . . . . . . |
B-59 |
|
memory ordering encodings . . . . . . . . . . . |
B-60 |
|
SSE2 extensions |
|
|
cacheability instruction encodings. . . . . . . |
B-74 |
|
CPUID flag . . . . . . . . . . . . . |
. . . . . . . . . . |
3-167 |
floating-point encodings . . . |
. . . . . . . . . . . |
B-61 |
integer instruction encodings . . . . . . . . . . |
B-68 |
|
SSE3 extensions |
|
|
CPUID extended function information. . . |
3-161 |
|
CPUID flag . . . . . . . . . . . . . |
. . . . . . . . . . |
3-164 |
integer instruction encodings . . . . . . . . . . |
B-76 |
|
Stack, pushing values on . . . . . |
. . . . . . . . . . |
4-179 |
Status flags, EFLAGS register |
. . . 3-115, 3-118, |
|
3-290, 3-296, 3-489, 4-251, 4-330 |
||
STC instruction . . . . |
. . . . . . . . . . |
. . . . . . . . . 4-288 |
STD instruction . . . . |
. . . . . . . . . . |
. . . . . . . . . 4-289 |
Stepping information |
. . . . . . . . . . |
. . . . 3-161, 3-171 |
STI instruction. . . . . |
. . . . . . . . . . |
. . . . . . . . . 4-290 |
STMXCSR instruction. . . . . . . . . |
. . . . . . . . . 4-293 |
|
STOS instruction . . |
. . . . . . . . . . |
. . . . 4-211, 4-295 |
STOSB instruction . |
. . . . . . . . . . |
. . . . . . . . . 4-295 |
STOSD instruction . |
. . . . . . . . . . |
. . . . . . . . . 4-295 |
STOSQ instruction . . |
. . . . . . . . . |
. . . . . . . . . 4-295 |
STOSW instruction . . |
. . . . . . . . . |
. . . . . . . . . 4-295 |
STR instruction . . . . . |
. . . . . . . . . |
. . . . . . . . . 4-299 |
String instructions |
. . 3-131, 3-453, 3-535, 3-657, |
|
4-16, 4-244, 4-295 |
|
|
SUB instruction. . . . . |
. . .3-24, 3-248, 3-533, 4-301 |
|
SUBPD instruction . . |
. . . . . . . . . |
. . . . . . . . . 4-304 |
INDEX
SUBSS instruction . . . . . . . . . . . . . . . . . . . . .4-313 Summary table notation . . . . . . . . . . . . . . . . . . .3-7 SWAPGS instruction . . . . . . . . . . . . . . . . . . .4-316 SYSCALL instruction . . . . . . . . . . . . . . . . . . .4-318 SYSENTER instruction . . . . . . . . . . . . . . . . .4-320
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-166 SYSEXIT instruction. . . . . . . . . . . . . . . . . . . .4-324 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-166 SYSRET instruction . . . . . . . . . . . . . . . . . . . .4-328
T
Tangent, x87 FPU operation . . . . . . . . . . . . .3-352 Task register
loading . . . . . . . . . . . . . . . . . . . . . . . . . . .3-545 storing . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-299
Task switch
CALL instruction . . . . . . . . . . . . . . . . . . . . .3-86 return from nested task, IRET
instruction . . . . . . . . . . . . . . . . . . . . . .3-475 TEST instruction. . . . . . . . . . . . . . . . . . . . . . .4-330 Thermal Monitor
CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-167 Thermal Monitor 2 . . . . . . . . . . . . . . . . . . . . .3-164 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-164 Time Stamp Counter . . . . . . . . . . . . . . . . . . .3-166 Time-stamp counter, reading . . . . . . . . . . . . .4-207 TLB entry, invalidating (flushing) . . . . . . . . . .3-473 TS (task switched) flag, CR0 register. . . . . . .3-110 TSD flag, CR4 register . . . . . . . . . . . . . . . . . .4-207 TSS, relationship to task register . . . . . . . . . .4-299
U
UCOMISD instruction. . . . . . . . . . . . . . . . . . .4-333 UCOMISS instruction . . . . . . . . . . . . . . . . . . .4-336 UD2 instruction. . . . . . . . . . . . . . . . . . . . . . . .4-339 Undefined, format opcodes . . . . . . . . . . . . . .3-394 Unordered values. . . . . . . . . . 3-292, 3-394, 3-396 UNPCKHPD instruction . . . . . . . . . . . . . . . . .4-340 UNPCKHPS instruction . . . . . . . . . . . . . . . . .4-343 UNPCKLPD instruction . . . . . . . . . . . . . . . . .4-346 UNPCKLPS instruction . . . . . . . . . . . . . . . . .4-349
V
VERR instruction . . . . . . . . . . . . . . . . . . . . . .4-352 Version information, processor . . . . . . . . . . .3-156 VERW instruction . . . . . . . . . . . . . . . . . . . . . .4-352 VM (virtual 8086 mode) flag, EFLAGS register . . .
3-475
W
WAIT/FWAIT instructions. . . . . . . . . . . . . . . .4-355 WBINVD instruction . . . . . . . . . . . . . . . . . . . .4-357 Write-back and invalidate caches . . . . . . . . .4-357 WRMSR instruction . . . . . . . . . . . . . . . . . . . .4-359 CPUID flag . . . . . . . . . . . . . . . . . . . . . . . .3-166
X
x87 FPU
checking for pending x87 FPU
exceptions . . . . . . . . . . . . . . . . . . . . . 4-355 constants. . . . . . . . . . . . . . . . . . . . . . . . . 3-331 initialization . . . . . . . . . . . . . . . . . . . . . . . 3-319
x87 FPU control word
loading. . . . . . . . . . . . . . . . . . . . . . 3-333, 3-335 RC field . . . . . . . . . . . . . . . 3-322, 3-331, 3-374 restoring . . . . . . . . . . . . . . . . . . . . . . . . . 3-357 saving . . . . . . . . . . . . . . . . . . . . . . 3-360, 3-380 storing . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-377
x87 FPU data pointer . .3-335, 3-357, 3-360, 3-380 x87 FPU instruction pointer . .3-335, 3-357, 3-360,
3-380
x87 FPU last opcode . .3-335, 3-357, 3-360, 3-380 x87 FPU status word
condition code flags . . . .3-292, 3-312, 3-394, 3-396, 3-399
loading. . . . . . . . . . . . . . . . . . . . . . . . . . . 3-335 restoring . . . . . . . . . . . . . . . . . . . . . . . . . 3-357 saving . . . . . . . . . . . . . . . . 3-360, 3-380, 3-383 TOP field . . . . . . . . . . . . . . . . . . . . . . . . . 3-317 x87 FPU flags affected by instructions . . . 3-14
x87 FPU tag word. . . . .3-335, 3-357, 3-360, 3-380 XADD instruction . . . . . . . . . . . . . . . . 3-533, 4-361 XCHG instruction . . . . . . . . . . . . . . . . 3-533, 4-363 XLAB instruction . . . . . . . . . . . . . . . . . . . . . . 4-366 XLAT instruction . . . . . . . . . . . . . . . . . . . . . . 4-366 XOR instruction . . . . . . . . . . . . . . . . . 3-533, 4-368 XORPD instruction . . . . . . . . . . . . . . . . . . . . 4-371 XORPS instruction . . . . . . . . . . . . . . . . . . . . 4-373
Z
ZF (zero) flag, EFLAGS register. . . . 3-144, 3-504, 3-538, 3-541, 4-211, 4-352
Vol. 2B INDEX-9
INDEX
INDEX-10 Vol. 2B