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)