Atmel Xplained Pro Evaluation Kit ATSAM4E-XPRO ATSAM4E-XPRO Data Sheet

Product codes
ATSAM4E-XPRO
Page of 1506
SAM4E [DATASHEET]
Atmel-11157D-ATARM-SAM4E16-SAM4E8-Datasheet_12-Jun-14
150
12.6.6.10  SMUL and SMULW
Signed Multiply (halfwords) and Signed Multiply (word by halfword)
Syntax
op{XY}{condRd,RnRm
op{Y}{condRdRnRm
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 bot
tom 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).
Y specifies which halfword of the source register Rm is used as the second mul
tiply operand. 
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.
cond
is an optional condition code, see 
.
Rd
is the destination register.
Rn, Rm
are registers holding the first and second operands.
Operation
The SMULBB, SMULTB, SMULBT and SMULTT instructions interprets the values from Rn and Rm as four signed
16-bit integers. These instructions:
Multiplies the specified signed halfword, Top or Bottom, values from Rn and Rm.
Writes the 32-bit result of the multiplication in Rd.
The SMULWT and SMULWB instructions interprets the values from Rn as a 32-bit signed integer and Rm as two
halfword 16-bit signed integers. These instructions:
Multiplies the first operand and the top, T suffix, or the bottom, B suffix, halfword of the second operand.
Writes the signed most significant 32 bits of the 48-bit result in the destination register.
Restrictions
In these instructions:
Do not use SP and do not use PC.
RdHi and RdLo must be different registers.
Examples
SMULBT
R0, R4, R5
; Multiplies the bottom halfword of R4 with the
 ; top halfword of R5, multiplies results and
 ; writes to R0
SMULBB       R0, R4, R5  ; Multiplies the bottom halfword of R4 with the
; bottom halfword of R5, multiplies results and
 ; writes to R0
SMULTT       R0, R4, R5  ; Multiplies the top halfword of R4 with the top
 ; halfword of R5, multiplies results and writes
 ; to R0
SMULTB       R0, R4, R5  ; Multiplies the top halfword of R4 with the