Volume 1 Application Programming (794095), страница 6
Текст из файла (страница 6)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Figure 3-18. I/O Address Space. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Figure 3-19. Memory Hierarchy Example. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Figure 4-1.FiguresParallel Operations on Vectors of Integer Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107ixAMD64 Technology24592—Rev. 3.13—July 2007Figure 4-2.Parallel Operations on Vectors of Floating-Point Elements . . .
. . . . . . . . . . . . . . . . . . . . . . . . 107Figure 4-3.Unpack and Interleave Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Figure 4-4.Pack Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 109Figure 4-5.Shuffle Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Figure 4-6.Move Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 111Figure 4-7.Move Mask Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Figure 4-8.Multiply-Add Operation . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Figure 4-9.Sum-of-Absolute-Differences Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Figure 4-10. Branch-Removal Sequence . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Figure 4-11. Move Mask Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Figure 4-12. 128-Bit Media Registers . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Figure 4-13. 128-Bit Media Control and Status Register (MXCSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Figure 4-14. 128-Bit Media Data Types . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122Figure 4-15. 128-Bit Media Floating-Point Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Figure 4-16. Mnemonic Syntax for Typical Instruction . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Figure 4-17. Integer Move Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Figure 4-18. MASKMOVDQU Move Mask Operation . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Figure 4-19. PMOVMSKB Move Mask Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Figure 4-20. PACKSSDW Pack Operation . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141Figure 4-21. PUNPCKLWD Unpack and Interleave Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Figure 4-22. PINSRW Operation. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Figure 4-23. PSHUFD Shuffle Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Figure 4-24. PSHUFHW Shuffle Operation . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Figure 4-25. Arithmetic Operation on Vectors of Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146Figure 4-26. PMULxW Multiply Operation . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Figure 4-27. PMULUDQ Multiply Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Figure 4-28. PMADDWD Multiply-Add Operation . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Figure 4-29. PSADBW Sum-of-Absolute-Differences Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Figure 4-30. PCMPEQB Compare Operation . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 154Figure 4-31. Floating-Point Move Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Figure 4-32. MOVMSKPS Move Mask Operation . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Figure 4-33. UNPCKLPS Unpack and Interleave Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Figure 4-34. SHUFPS Shuffle Operation . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166xFigures24592—Rev. 3.13—July 2007AMD64 TechnologyFigure 4-35. ADDPS Arithmetic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 167Figure 4-36. CMPPD Compare Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Figure 4-37. COMISD Compare Operation . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 174Figure 4-38. SIMD Floating-Point Detection Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Figure 5-1.Parallel Integer Operations on Elements of Vectors. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 195Figure 5-2.Unpack and Interleave Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Figure 5-3.Shuffle Operation (1 of 256). . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Figure 5-4.Multiply-Add Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Figure 5-5.Branch-Removal Sequence . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Figure 5-6.Floating-Point (3DNow!™ Instruction) Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Figure 5-7.64-Bit Media Registers . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Figure 5-8.64-Bit Media Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 202Figure 5-9.64-Bit Floating-Point (3DNow!™) Vector Operand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Figure 5-10. Mnemonic Syntax for Typical Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 208Figure 5-11. MASKMOVQ Move Mask Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Figure 5-12. PACKSSDW Pack Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 213Figure 5-13. PUNPCKLWD Unpack and Interleave Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Figure 5-14. PSHUFW Shuffle Operation. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 215Figure 5-15. PSWAPD Swap Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Figure 5-16. PMADDWD Multiply-Add Operation . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Figure 5-17. PFACC Accumulate Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Figure 6-1.x87 Registers. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Figure 6-2.x87 Physical and Stack Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Figure 6-3.x87 Status Word Register (FSW) . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 242Figure 6-4.x87 Control Word Register (FCW). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Figure 6-5.x87 Tag Word Register (FTW). . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Figure 6-6.x87 Pointers and Opcode State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Figure 6-7.x87 Data Types . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251Figure 6-8.x87 Floating-Point Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Figure 6-9.x87 Packed Decimal Data Type . . . . . . . . . . .