
Contents
vii
24593—Rev. 3.09—September 2003
AMD 64-Bit Technology
Use Streaming Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Align Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Organize Data for Cacheability . . . . . . . . . . . . . . . . . . . . . . . 225
Prefetch Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Use 128-Bit Media Code for Moving Data. . . . . . . . . . . . . . . 226
Retain Intermediate Results in XMM Registers . . . . . . . . . 226
Replace GPR Code with 128-bit media Code. . . . . . . . . . . . 226
Replace x87 Code with 128-Bit Media Code. . . . . . . . . . . . . 226
64-Bit Media Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5
5.1
5.2
5.3
Origins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Parallel Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Data Conversion and Reordering. . . . . . . . . . . . . . . . . . . . . . 231
Matrix Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Saturation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Branch Removal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Floating-Point (3DNow!) Vector Operations . . . . . . . . . . . 236
Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
MMX Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Other Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Operand Sizes and Overrides. . . . . . . . . . . . . . . . . . . . . . . . . 240
Operand Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Data Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Integer Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Floating-Point Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Instruction Summary—Integer Instructions. . . . . . . . . . . . . 245
Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Exit Media State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Data Transfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Data Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Data Reordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Logical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Save and Restore State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Instruction Summary—Floating-Point Instructions. . . . . . . 265
Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Data Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Instruction Effects on Flags . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Instruction Prefixes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Supported Prefixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
5.4
5.5
5.6
5.7
5.8
5.9