MPY(U/US/SU)
Signed or Unsigned Integer Multiply 16lsb x 16lsb
3-76
Syntax
MPY (.unit)
src1, src2, dst
or
MPYU (.unit)
src1, src2, dst
or
MPYUS (.unit)
src1, src2, dst
or
MPYSU (.unit)
src1, src2, dst
.unit = .M1 or .M2
Opcode map field used... For operand type...
Unit
Opfield Mnemonic
src1
src2
dst
slsb16
xslsb16
sint
.M1, .M2
11001
MPY
src1
src2
dst
ulsb16
xulsb16
uint
.M1, .M2
11111
MPYU
src1
src2
dst
ulsb16
xslsb16
sint
.M1, .M2
11101
MPYUS
src1
src2
dst
slsb16
xulsb16
sint
.M1, .M2
11011
MPYSU
src1
src2
dst
scst5
xslsb16
sint
.M1, .M2
11000
MPY
src1
src2
dst
scst5
xulsb16
sint
.M1, .M2
11110
MPYSU
Opcode
31
29 28 27
23 22
18 17
creg
z
dst
src2
13 12 11
5
4
3
2
1
0
x
op
0
0
0
s
p
3
5
5
5
5
7
6
0
0
src1/cst
Description
The
src1 operand is multiplied by the src2 operand. The result is placed in dst.
The source operands are signed by default. The S is needed in the mnemonic
to specify a signed operand when both signed and unsigned operands are
used.
Execution
if (cond)
lsb16(
src1)
lsb16(
src2)
→
dst
else
nop