15
15 – 45
MAC
MULTIPLY / SUBTRACT
Z: Destination register
COND: condition
Xop: X operand register
Syntax:
[ IF cond ]
MR
= MR – xop * yop
(SS) ;
MF
xop
(SU)
(US)
(UU)
(RND)
Permissible xops
Permissible yops
Permissible conds (see Table 15.9)
MX0
AR
MY0
EQ
LE
AC
MX1
SR1
MY1
NE
NEG
NOT AC
MR2
SR0
MF
GT
POS
MV
MR1
GE
AV
NOT MV
MR0
LT
NOT AV
NOT CE
Examples:
IF LT MR = MR – MX1 * MY0 (SU) ;
xop * yop
MR = MR – MX0 * MX0 (SS);
xop * xop
Description:
Test the optional condition and, if true, then multiply the
two source operands, subtract the product from the present contents of
the MR register, and store the result in the destination location. If the
condition is not true perform a no-operation. Omitting the condition
performs the multiply/subtract unconditionally. The operands are
contained in the data registers specified in the instruction. When MF is the
destination operand, only bits 16-31 of the 40-bit result are stored in MF.
The xop * xop squaring operation is only available on the ADSP-217x,
ADSP-218x, and ADSP-21msp58/59 processors. Both xops must be the
same register.
The data format selection field to the right of the two operands specifies
whether each respective operand is in signed (S) or unsigned (U) format.
The xop is specified first and yop is second. If the xop * xop operation is
used, the data format selection field must be (UU), (SS), or (RND) only.
There is no default; one of the data formats must be specified.
If RND (Round) is specified, the MAC multiplies the two source operands,
subtracts the product from the current contents of the MR register, rounds
the result to the most significant 24 bits (or rounds bits 31-16 to 16 bits if
there is no overflow from the multiply/accumulate), and stores the result
in the destination register. The two multiplication operands xop and yop
(or xop and xop) are considered to be in twos complement format. All
(instruction continues on next page)