6.48. Using Vector Instructions through Built-in Functions
6.48 Using Vector Instructions through Built-in Functions
On some targets, the instruction set contains SIMD vector instructions which operate on multiple values contained in one large register at the same time. For example, on the x86 the MMX, 3DNow! and SSE extensions can be used this way.
The first step in using these extensions is to provide the necessary data types. This should be done using an appropriate typedef
:
typedef int v4si __attribute__ ((vector_size (16)));
The int
type specifies the base type, while the attribute specifies the vector size for the variable, measured in bytes. For example, the declaration above causes the compiler to set the mode for the v4si
type to be 16 bytes wide and divided into int
sized units. For a 32-bit int
this means a vector of 4 units of 4 bytes, and the correspond