AMCC Proprietary 258
Revision 1.02 - September 10, 2007
PPC405 Processor
maclhws
Multiply Accumulate Low Halfword to Word Saturate Signed
Preliminary User’s Manual
maclhws
Multiply Accumulate Low Halfword to Word Sat urate Signed
prod
0:31
← (RA)
16:31
x (RB)
16:31
signed
temp
0:32
← prod
0:31
+ (RT)
if ((prod
0
= RT
0
) ∧ (RT
0
≠ temp
1
)) then (RT) ← (RT
0
||
31
(¬RT
0
))
else (RT)
← temp
1:32
The low-order halfword of RA is multiplied by the low-order halfword of RB. The signed product is summed with the
contents of RT and the sum is stored in a 33-bit temporary register.
If a result does not overflow, the low-order 32 bits of the temporary register are stored in RT.
If a result overflows, the returned result is the nearest representable value. Thus, if a result is less than –2
31
, the
value stored in RT is –2
31
. Likewise, if a result is greater than 2
31
– 1, the value stored in RT is 2
31
–1.
Registers Altered
•RT
• CR[CR0]
LT, GT, EQ, SO
if Rc contains 1
• XER[SO, OV] if OE contains 1
Architecture Note
This instruction is part of the Multiply-Accumulate instruction set extensions and complies with the architectural
requirements for APUs of the PowerPC Embedded Environment. As such, it is not part of the PowerPC Architec-
ture, nor is it part of the PowerPC Embedded Environment. Programs that use this instruction may not be portable
to other implementations.
maclhws RT, RA, RB OE=0, Rc=0
maclhws. RT, RA, RB OE=0, Rc=1
maclhwso RT, RA, RB OE=1, Rc=0
maclhwso. RT, RA, RB OE=1, Rc=1
4RTRARBOE492Rc
0 6 11 16 21 22 31