#include <ppc_ps.h> typedef __vec2x32float__ f32x2;

None.

The MULTI Paired Single extensions enable support for a built-in data type,
`__vec2x32float__`

, that represents a vector two 32-bit floating-point numbers.
When possible, variables with this type are allocated to the floating-point registers.

The `ppc_ps.h`

header file defines the type `f32x2`

, which is shorter and easier to use.

The `f32x2`

type supports brace-delimited constant initializers like arrays or structures in C.
For example, the following code snippet initializes the `ps0`

element of `t`

to `1.0`

, and the `ps1`

field of `t`

to `-1.0`

.

f32x2 t = { 1.0f, -1.0f };

As with C arrays, undefined elements are initialized zero. For example,
the following code snippet initializes the `ps0`

element of `u`

to `1.0`

and the
`ps1`

element of `u`

to `0.0`

.

f32x2 u = { 1.0f };

The `ps0`

and `ps1`

fields of the vector can be accessed as if the vector is an array
with fixed size using square brackets. The following example returns the sum of the
`ps0`

and `ps1`

halves of the parameter a.

float func(f32x2 a) { return a[0] + a[1]; }

The only direct operations on the `f32x2`

type are assignment, initialization, and
accessing elements with the array syntax.
Other operations are not permitted on the `f32x2`

data type.
For example, a Paired Single variable may not be cast to another type,
added to another Paired Single with the `+`

operator, or negated using the unary `-`

operator.

`__PS_ABS`

`__PS_ADD`

`__PS_ADDS`

`__PS_FDUP`

`__PS_DIV`

`__PS_DIVS`

`__PS_MADD`

`__PS_MADDS`

`__PS_MADDS0`

`__PS_MADDS1`

`__PS_MERGE00`

`__PS_MERGE01`

`__PS_MERGE10`

`__PS_MERGE11`

`__PS_MSUB`

`__PS_MSUBS`

`__PS_MUL`

`__PS_MULS`

`__PS_MULS0`

`__PS_MULS1`

`__PS_NABS`

`__PS_NMADD`

`__PS_NMADDS`

`__PS_NMSUB`

`__PS_NMSUBS`

`__PS_NEG`

`__PS_NEGS`

`__PS_RES`

`__PS_RESS`

`__PS_RSQRTE`

`__PS_SEL`

`__PS_SUB`

`__PS_SUM0`

`__PS_SUM1`

`__PS_SUBS`

`__PSQ_L`

`__PSQ_LX`

`__PSQ_ST`

`__PSQ_STX`

`OSInitFastCast`

`OSf32tos16`

`OSf32tos8`

`OSf32tou16`

`OSf32tou8`

`OSs16tof32`

`OSs8tof32`

`OSu16tof32`

`OSu8tof32`

2013-05-08 Automated cleanup pass.

2011-09-21 Initial version.

CONFIDENTIAL