9.1.1 x86 extensions

GCC can take advantage of the additional instructions in the MMX, SSE, SSE2, SSE3 and 3dnow extensions of recent Intel and AMD processors. The options -mmmx, -msse, -msse2, -msse3 and -m3dnow enable the use of these extra instructions, allowing multiple words of data to be processed in parallel. The resulting executables will only run on processors supporting the appropriate extensions—on other systems they will crash with an Illegal instruction error (or similar).29

The option -mfpmath=sse instructs GCC to use the SSE extensions for floating-point arithmetic where possible. For this option to take effect, the SSE or SSE2 extensions must first be enabled with -msse or -msse2.

Note that the plain SSE extensions only support single precision operations—double precision arithmetic is part of SSE2. Since most C and C++ programs declare floating-point variables as double rather than float, the combined options -msse2 -mfpmath=sse are usually needed. On 64-bit processors these options are enabled by default.


Footnotes

(29)

On GNU/Linux systems, the command cat /proc/cpuinfo will display information about the CPU.