The Cortex-M4 Instruction Set
ARM DUI 0553A
Copyright © 2010 ARM. All rights reserved.
3-89
ID121610
Non-Confidential
3.6.9
SMUAD and SMUSD
Signed Dual Multiply Add and Signed Dual Multiply Subtract.
Syntax
op{X}{
cond
}
Rd
,
Rn
,
Rm
where:
op
Is one of:
SMUAD
Signed Dual Multiply Add.
SMUADX
Signed Dual Multiply Add Reversed.
SMUSD
Signed Dual Multiply Subtract.
SMUSDX
Signed Dual Multiply Subtract Reversed.
If
X
is present, the multiplications are bottom × top and top × bottom. If the
X
is
omitted, the multiplications are bottom × bottom and top × top.
cond
Is an optional condition code, see
.
Rd
Specifies the destination register.
Rn, Rm
Are registers holding the first and the second operands.
Operation
The
SMUAD
instruction interprets the values from the first and second operands as two signed
halfwords in each operand. This instruction:
•
Optionally rotates the halfwords of the second operand.
•
Performs two signed 16 × 16-bit multiplications.
•
Adds the two multiplication results together.
•
Writes the result of the addition to the destination register.
The
SMUSD
instruction interprets the values from the first and second operands as two’s
complement signed integers. This instruction:
•
Optionally rotates the halfwords of the second operand.
•
Performs two signed 16 × 16-bit multiplications.
•
Subtracts the result of the top halfword multiplication from the result of the bottom
halfword multiplication.
•
Writes the result of the subtraction to the destination register.
Restrictions
In these instructions:
•
Do not use SP and do not use PC.
Condition flags
Sets the Q flag if the addition overflows. The multiplications cannot overflow.
Examples
SMUAD
R0, R4, R5 ; Multiplies bottom halfword of R4 with the bottom
; halfword of R5, adds multiplication of top halfword
; of R4 with top halfword of R5, writes to R0