
Contents
v
24593—Rev. 3.09—September 2003
AMD 64-Bit Technology
Procedure Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Returning from Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
System Calls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
General Considerations for Branching . . . . . . . . . . . . . . . . . 102
Branching in 64-Bit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Interrupts and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
I/O Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
I/O Ordering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Protected-Mode I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Memory Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Accessing Memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Forcing Memory Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Caches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Cache Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Cache Pollution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Cache-Control Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Performance Considerations . . . . . . . . . . . . . . . . . . . . . . . . . 124
Use Large Operand Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Use Short Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Align Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Avoid Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Prefetch Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Keep Common Operands in Registers. . . . . . . . . . . . . . . . . . 125
Avoid True Dependencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Avoid Store-to-Load Dependencies . . . . . . . . . . . . . . . . . . . . 126
Optimize Stack Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Consider Repeat-Prefix Setup Time . . . . . . . . . . . . . . . . . . . 126
Replace GPR with Media Instructions . . . . . . . . . . . . . . . . . 126
Organize Data in Memory Blocks. . . . . . . . . . . . . . . . . . . . . . 126
128-Bit Media and Scientific Programming . . . . . . . . . . . . . 127
3.8
3.9
3.10
4
4.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Origins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Types of Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Integer Vector Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Floating-Point Vector Operations . . . . . . . . . . . . . . . . . . . . . 130
Data Conversion and Reordering. . . . . . . . . . . . . . . . . . . . . . 131
Block Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Matrix and Special Arithmetic Operations. . . . . . . . . . . . . . 135
Branch Removal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
XMM Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
MXCSR Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Other Data Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
rFLAGS Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.2
4.3