<<<    Index    >>>
TABLE OF CONTENTS
viii
7.6.OPERATING ON NANS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7-43
7.6.1.Operating on NaNs with Streaming SIMD Extensions . . . . . . . . . . . . . . . . . . . .7-44
7.6.2.Uses for Signaling NANs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-45
7.6.3.Uses for Quiet NANs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-45
7.7.FLOATING-POINT EXCEPTION HANDLING . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7-46
7.7.1.Arithmetic vs. Non-arithmetic Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-46
7.7.2.Automatic Exception Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-47
7.7.3.Software Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-49
7.7.3.1.Native Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-49
7.7.3.2.MS-DOS* Compatibility Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-49
7.7.3.3.Typical Floating-Point Exception Handler Actions . . . . . . . . . . . . . . . . . . . . .7-50
7.8.FLOATING-POINT EXCEPTION CONDITIONS . . . . . . . . . . . . . . . . . . . . . . . . . .  7-51
7.8.1.Invalid Operation Exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-51
7.8.1.1.Stack Overflow or Underflow Exception (#IS). . . . . . . . . . . . . . . . . . . . . . . . .7-52
7.8.1.2.Invalid Arithmetic Operand Exception (#IA) . . . . . . . . . . . . . . . . . . . . . . . . . .7-52
7.8.2.Divide-By-Zero Exception (#Z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-53
7.8.3.Denormal Operand Exception (#D). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-54
7.8.4.Numeric Overflow Exception (#O). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-54
7.8.5.Numeric Underflow Exception (#U). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-56
7.8.6.Inexact Result (Precision) Exception (#P). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-57
7.8.7.Exception Priority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-57
7.9.FLOATING-POINT EXCEPTION SYNCHRONIZATION . . . . . . . . . . . . . . . . . . . .  7-58
CHAPTER 8 
PROGRAMMING WITH THE INTEL 
MMX™ TECHNOLOGY
8.1.OVERVIEW OF THE MMX™ TECHNOLOGY PROGRAMMING ENVIRONMENT  8-1
8.1.1.MMX™ Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-2
8.1.2.MMX™ Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-3
8.1.3.Single Instruction, Multiple Data (SIMD) Execution Model . . . . . . . . . . . . . . . . . .8-4
8.1.4.Memory Data Formats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-4
8.1.5.Data Formats for MMX™ Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-5
8.2.MMX™ INSTRUCTION SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  8-5
8.2.1.Saturation Arithmetic and Wraparound Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . .8-6
8.2.2.Instruction Operands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-7
8.3.OVERVIEW OF THE MMX™ INSTRUCTION SET. . . . . . . . . . . . . . . . . . . . . . . . .  8-7
8.3.1.Data Transfer Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-7
8.3.2.Arithmetic Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9
8.3.2.1.Packed Addition and Subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9
8.3.2.2.Packed Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9
8.3.2.3.Packed Multiply Add. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9
8.3.3.Comparison Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-9
8.3.4.Conversion Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10
8.3.5.Logical Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10
8.3.6.Shift Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10
8.3.7.EMMS (Empty MMX™ State) Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-10
8.4.COMPATIBILITY WITH FPU ARCHITECTURE . . . . . . . . . . . . . . . . . . . . . . . . . .  8-11
8.4.1.MMX™ Instructions and the Floating-Point Tag Word . . . . . . . . . . . . . . . . . . . .8-11
8.4.2.Effect of Instruction Prefixes on MMX™ Instructions . . . . . . . . . . . . . . . . . . . . .8-11
8.5.WRITING APPLICATIONS WITH MMX™ CODE . . . . . . . . . . . . . . . . . . . . . . . . .  8-11
8.5.1.Detecting Support for MMX™ Technology Using the CPUID Instruction . . . . . .8-12
8.5.2.Using the EMMS Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-12
<<<    Index    >>>