Volume 1 Basic Architecture (794100), страница 7
Текст из файла (страница 7)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-11WRITING APPLICATIONS WITH MMX CODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-11Checking for MMX Technology Support . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-11Transitions Between x87 FPU and MMX Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-12Using the EMMS Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .9-12Mixing MMX and x87 FPU Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-13Interfacing with MMX Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.9-13Using MMX Code in a Multitasking Operating System Environment . . . . . . . . . . . . . . . .9-14Exception Handling in MMX Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-14Register Mapping . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-14Effect of Instruction Prefixes on MMX Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-14CHAPTER 10PROGRAMMING WITHSTREAMING SIMD EXTENSIONS (SSE)10.1OVERVIEW OF SSE EXTENSIONS. . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-110.2SSE PROGRAMMING ENVIRONMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-310.2.1SSE in 64-Bit Mode and Compatibility Mode . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-410.2.2XMM Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-410.2.3MXCSR Control and Status Register . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-510.2.3.1SIMD Floating-Point Mask and Flag Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-610.2.3.2SIMD Floating-Point Rounding Control Field . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .10-710.2.3.3Flush-To-Zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-710.2.3.4Denormals-Are-Zeros . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10-710.2.4Compatibility of SSE Extensions with SSE2/SSE3/MMX and the x87 FPU . . . . . . . . . .10-810.3SSE DATA TYPES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 10-810.4SSE INSTRUCTION SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-910.4.1SSE Packed and Scalar Floating-Point Instructions . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .10-910.4.1.1SSE Data Movement Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1110.4.1.2SSE Arithmetic Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 10-1110.4.2SSE Logical Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1310.4.2.1SSE Comparison Instructions . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1310.4.2.2SSE Shuffle and Unpack Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1410.4.3SSE Conversion Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 10-1510.4.4SSE 64-Bit SIMD Integer Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1610.4.5MXCSR State Management Instructions. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 10-1710.4.6Cacheability Control, Prefetch, and Memory Ordering Instructions . . . . . . . . . . . . . . . 10-18Vol. 1 xiCONTENTSPAGE10.4.6.1Cacheability Control Instructions . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1810.4.6.2Caching of Temporal vs. Non-Temporal Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1810.4.6.3PREFETCHh Instructions . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1910.4.6.4SFENCE Instruction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2010.5FXSAVE AND FXRSTOR INSTRUCTIONS . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2010.6HANDLING SSE INSTRUCTION EXCEPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2110.7WRITING APPLICATIONS WITH THE SSE EXTENSIONS . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 10-21CHAPTER 11PROGRAMMING WITHSTREAMING SIMD EXTENSIONS 2 (SSE2)11.1OVERVIEW OF SSE2 EXTENSIONS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-111.2SSE2 PROGRAMMING ENVIRONMENT . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 11-311.2.1SSE2 in 64-Bit Mode and Compatibility Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-411.2.2Compatibility of SSE2 Extensions with SSE, MMXTechnology and x87 FPU Programming Environment . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 11-411.2.3Denormals-Are-Zeros Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-411.3SSE2 DATA TYPES . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-511.4SSE2 INSTRUCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-611.4.1Packed and Scalar Double-Precision Floating-Point Instructions . . . . .
. . . . . . . . . . . . . . 11-611.4.1.1Data Movement Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-711.4.1.2SSE2 Arithmetic Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-811.4.1.3SSE2 Logical Instructions . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-911.4.1.4SSE2 Comparison Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-911.4.1.5SSE2 Shuffle and Unpack Instructions. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1011.4.1.6SSE2 Conversion Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1211.4.2SSE2 64-Bit and 128-Bit SIMD Integer Instructions . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1511.4.3128-Bit SIMD Integer Instruction Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1611.4.4Cacheability Control and Memory Ordering Instructions . . . . . . . . . . . . . . . . . . . . . . . . . 11-1611.4.4.1FLUSH Cache Line. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1711.4.4.2Cacheability Control Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1711.4.4.3Memory Ordering Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 11-1711.4.4.4Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1811.4.5Branch Hints. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1811.5SSE, SSE2, AND SSE3 EXCEPTIONS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1811.5.1SIMD Floating-Point Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 11-1911.5.2SIMD Floating-Point Exception Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1911.5.2.1Invalid Operation Exception (#I). . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2011.5.2.2Denormal-Operand Exception (#D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2111.5.2.3Divide-By-Zero Exception (#Z). .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2211.5.2.4Numeric Overflow Exception (#O). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2211.5.2.5Numeric Underflow Exception (#U) . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 11-2211.5.2.6Inexact-Result (Precision) Exception (#P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2311.5.3Generating SIMD Floating-Point Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 11-2311.5.3.1Handling Masked Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2311.5.3.2Handling Unmasked Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2511.5.3.3Handling Combinations of Masked and Unmasked Exceptions. .