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 #195 background imageLoading...
Page #195 background image
Coding for SIMD Architectures 3
3-15
Assembly
Key loops can be coded directly in assembly language using an
assembler or by using inlined assembly (C-asm) in C/C++ code. The
Intel compiler or assembler recognize the new instructions and registers,
then directly generate the corresponding code. This model offers the
opportunity for attaining greatest performance, but this performance is
not portable across the different processor architectures.
Example 3-9 shows the Streaming SIMD Extensions inlined assembly
encoding.
Intrinsics
Intrinsics provide the access to the ISA functionality using C/C++ style
coding instead of assembly language. Intel has defined three sets of
intrinsic functions that are implemented in the Intel
®
C++ Compiler to
support the MMX technology, Streaming SIMD Extensions and
Streaming SIMD Extensions 2. Four new C data types, representing
64-bit and 128-bit objects are used as the operands of these intrinsic
functions.
__m64 is used for MMX integer SIMD, __m128 is used for
single-precision floating-point SIMD,
__m128i is used for Streaming
Example 3-9 Streaming SIMD Extensions Using Inlined Assembly Encoding
void add(float *a, float *b, float *c)
{
__asm {
mov eax, a
mov edx, b
mov ecx, c
movaps xmm0, XMMWORD PTR [eax]
addps xmm0, XMMWORD PTR [edx]
movaps XMMWORD PTR [ecx], xmm0
}
}

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