Nintendo Ultra64 Programmer's Manual page 71

Rsp
Table of Contents

Advertisement

Revision 1.0
vne:
vge:
vch:
vcl:
vcr:
vmrg:
To implement comparisons which are not supplied, the 'vle'
Note:
compare can be performed by vge after swapping
similarly, 'vgt' by vlt. If
and then 'vgt' is performed by vge, and 'vle' by vlt.
Select merge instructions select elements of
the VCC and write the element to
different operands from one comparison or after loading VCC with a bit field.
Double precision comparisons are supported in combination with the VCO
register set by vsubc.
The compare operations use the contents of VCO as input and clear VCO.
Usually VCO was previously set by a vsubc instruction, with a negative
(carry) or not equal status bit for each element of the vector, so double
precision (32 bit) compares can be accomplished.
The compares (ignoring VCO for the moment) are equivalent to
for (i=0; i<8; i++) {
if (VS[i] condition VT[i])
VCC |= (1<<i);
else
VCC &= ~(1<<i),
VD[i] = (VCC & (1 << i))? VS[i]: VT[i];
}
Compares other than vch/vcl/vcr clear the upper 8 bits of VCC.
The merge is equivalent to
for (i=0; i<8; i++)
VD[i] = (VCC & (1 << i))? VS[i]: VT[i];
VS!= VT
VS >= VT
Clip test, single precision or high half of double
precision.
Clip test, low half of double precision.
1's complement clamp.
VD = VS or VT selected by VCC, VCO is ignored.
vt
is scalar, the value can be decremented
vs
vt
or
vd
. Merge is useful for selecting several
VU Select Instructions
vs
vt
and
operands;
based on the contents of
71

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents