135
SAM4CP [DATASHEET]
43051E–ATPL–08/14
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
SMUADX R3, R7, R4 ; Multiplies bottom halfword of R7 with top halfword
; of R4, adds multiplication of top halfword of R7
; with bottom halfword of R4, writes to R3
SMUSD R3, R6, R2 ; Multiplies bottom halfword of R4 with bottom halfword
; of R6, subtracts multiplication of top halfword of R6
; with top halfword of R3, writes to R3
SMUSDX R4, R5, R3 ; Multiplies bottom halfword of R5 with top halfword of
; R3, subtracts multiplication of top halfword of R5
; with bottom halfword of R3, writes to R4.
12.6.6.10 SMUL and SMULW
Signed Multiply (halfwords) and Signed Multiply (word by halfword).
Syntax
op
{
XY
}{
cond
}
Rd
,
Rn
,
Rm
op
{
Y
}{
cond
}
Rd
.
Rn
,
Rm
For
SMULXY
only:
op
is one of:
SMUL{
XY
} Signed Multiply (halfwords).
X
and
Y
specify which halfword of the source registers
Rn
and
Rm
is used as the first and second multiply
operand.
If
X
is B, then the bottom halfword, bits [15:0] of
Rn
is used.
If
X
is T, then the top halfword, bits [31:16] of
Rn
is used.If
Y
is B, then the bottom halfword, bits [15:0], of
Rm
is used.
If
Y
is T, then the top halfword, bits [31:16], of
Rm
is used.
SMULW{Y} Signed Multiply (word by halfword).