EasyManuals Logo

Intel ARCHITECTURE IA-32 User Manual

Intel ARCHITECTURE IA-32
568 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Page #225 background imageLoading...
Page #225 background image
Optimizing for SIMD Integer Applications 4
4-5
Don’t empty when already empty: If the next instruction uses an
MMX register,
_mm_empty() incurs a cost with no benefit.
Group Instructions: Try to partition regions that use x87 FP
instructions from those that use 64-bit SIMD integer instructions.
This eliminates needing an
emms instruction within the body of a
critical loop.
Runtime initialization: Use _mm_empty() during runtime
initialization of
__m64 and x87 FP data types. This ensures
resetting the register between data type transitions. See Example 4-1
for coding usage.
Further, you must be aware that your code generates an MMX
instruction, which uses the MMX registers with the Intel C++ Compiler,
in the following situations:
when using a 64-bit SIMD integer intrinsic from MMX technology,
SSE, or SSE2
when using a 64-bit SIMD integer instruction from MMX
technology, SSE, or SSE2 through inline assembly
when referencing an __m64 data type variable
Additional information on the x87 floating-point programming model
can be found in the IA-32 Intel® Architecture Software Developers
Manual, Volume 1. For more documentation on
emms, visit
h
ttp://developer.intel.com.
Example 4-1 Resetting the Register between __m64 and FP Data Types
Incorrect Usage Correct Usage
__m64 x = _m_paddd(y, z); __m64 x = _m_paddd(y, z);
float f = init(); float f = (_mm_empty(), init());

Table of Contents

Questions and Answers:

Question and Answer IconNeed help?

Do you have a question about the Intel ARCHITECTURE IA-32 and is the answer not in the manual?

Intel ARCHITECTURE IA-32 Specifications

General IconGeneral
Instruction Setx86
Instruction Set TypeCISC
Memory SegmentationSupported
Operating ModesReal mode, Protected mode, Virtual 8086 mode
Max Physical Address Size36 bits (with PAE)
Max Virtual Address Size32 bits
ArchitectureIA-32 (Intel Architecture 32-bit)
Addressable Memory4 GB (with Physical Address Extension up to 64 GB)
Floating Point Registers8 x 80-bit
MMX Registers8 x 64-bit
SSE Registers8 x 128-bit
RegistersGeneral-purpose registers (EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP), Segment registers (CS, DS, SS, ES, FS, GS), Instruction pointer (EIP), Flags register (EFLAGS)
Floating Point UnitYes (x87)

Related product manuals