Multiply Signed 16 MSB x Unsigned 16 MSB
MPYHSU
3-153
Instruction Set
SPRU733
Multiply Signed 16 MSB
Unsigned 16 MSB
MPYHSU
Syntax
MPYHSU
(.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 0 0 0 1 1 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
smsb16
xumsb16
sint
.M1, .M2
Description
The
signed operand
src1
is multiplied by the unsigned
operand
src2
. The result
is placed in
dst
. The
S
is needed in the mnemonic to specify a signed operand
when both signed and unsigned operands are used.
Execution
if (cond)
msb16(
src1
)
×
msb16(
src2
)
→
dst
else nop
Pipeline
Stage
E1
E2
Read
src1, src2
Written
dst
Unit in use
.M
Instruction Type
Multiply (16
×
16)
Delay Slots
1
See Also
MPYH, MPYHU, MPYHUS
Example
MPYHSU .M1 A1,A2,A3
Before instruction
2 cycles after instruction
A1 0023 0000h
35
†
A1 0023 0000h
A2 FFA7 FFFFh
65447
‡
A2 FFA7 FFFFh
A3 xxxx xxxxh
A3 0022 F3D5h
2290645
†
Signed 16-MSB integer
‡
Unsigned 16-MSB integer
Pipeline