Multiply Signed 16 LSB x Signed 16 LSB With Left Shift and Saturation
SMPY
3-219
Instruction Set
SPRU733
Multiply Signed 16 LSB
Signed 16 LSB With Left Shift and Saturation
SMPY
Syntax
SMPY
(.unit)
src1
,
src2
,
dst
.unit = .M1 or .M2
Compatibility
C62x, C64x, C67x, and C67x+ CPU
Opcode
31
29
28
27
23
22
18
17
13
12
11
7
6
5
4
3
2
1
0
creg
z
dst
src2
src1
x 1 1 0 1 0 0 0 0 0 0
s p
3
1
5
5
5
1
1
1
Opcode map field used...
For operand type...
Unit
src1
src2
dst
slsb16
xslsb16
sint
.M1, .M2
Description
The
src1
operand is multiplied by the
src2
operand. The result is left shifted
by 1 and placed in
dst
. If the left-shifted result is 8000 0000h, then the result
is saturated to 7FFF FFFFh. If a saturate occurs, the SAT bit in CSR is set
one cycle after
dst
is written. The source operands are signed by default.
Execution
if (cond)
{
if (((
src1
src2
)
<<
1) != 8000 0000h)
((
src1
src2
)
<<
1)
→
dst
else
7FFF FFFFh
→
dst
}
else nop
Pipeline
Stage
E1
E2
Read
src1, src2
Written
dst
Unit in use
.M
Instruction Type
Single-cycle (16
×
16)
Delay Slots
1
See Also
MPY, SMPYH, SMPYHL, SMPYLH
Pipeline