3-9
INSTRUCTION SET REFERENCE
3.1.3.Intel C/C++ Compiler Intrinsics Equivalent
The Pentium
®
with MMX technology, Pentium
®
II, and Pentium
®
III processors have charac-
teristics that enable the development of advanced multimedia applications. This section
describes the compiler intrinsic equivalents that can be used with the Intel C/C++ Compiler.
Intrinsics are special coding extensions that allow using the syntax of C function calls and C
variables instead of hardware registers. Using these intrinsics frees programmers from having
to manage registers and assembly programming. Further, the compiler optimizes the instruction
scheduling so that executables runs faster.
The following sections discuss the intrinsics API and the MMX technology and SIMD
floating-point intrinsics. Each intrinsic equivalent is listed with the instruction description.
There may be additional intrinsics that do not have an instruction equivalent. It is strongly
recommended that the reader reference the compiler documentation for the complete list of
supported intrinsics. Please refer to the
Intel C/C++ Compiler Users Guide for Win32* Systems With
Streaming SIMD Extension Support (Order Number 718195-00B). Refer to Appendix C, Compiler Intrin-
sics and Functional Equivalents for more information on using intrinsics.
Most of the intrinsics that use __m64 operands have two different names. If two intrinsic names
are shown for the same equivalent, the first name is the intrinsic for Intel C/C++ Compiler ver-
sions prior to 4.0 and the second name should be used with the Intel C/C++ Compiler version
4.0 and future versions. The Intel C/C++ Compiler version 4.0 will support the old intrinsic
names. Programs written using pre-4.0 intrinsic names will compile with version 4.0. Version
4.0 intrinsic names will not compile on pre-4.0 compilers.
3.1.3.1.THE INTRINSICS API
The benefit of coding with MMX technology intrinsics and SIMD floating-point intrinsics is
that you can use the syntax of C function calls and C variables instead of hardware registers.
This frees you from managing registers and programming assembly. Further, the compiler opti-
mizes the instruction scheduling so that your executable runs faster. For each computational and
data manipulation instruction in the new instruction set, there is a corresponding C intrinsic that
implements it directly. The intrinsics allow you to specify the underlying implementation
(instruction selection) of an algorithm yet leave instruction scheduling and register allocation to
the compiler.