Multiply two 16-bit fractional values and subtract this product from a 32-bit fractional value, saturating if necessary. Generates a 32-bit result.
OMR's SA bit was set to 1 at least three cycles before this code, that is, saturation on data ALU results enabled.
Word32 L_msu(Word32 laccum, Word16 sinp1, Word16 sinp2)
short s1 = 0xC000;/* - 0.5 */ short s2 = 0xC000;/* - 0.5 */ long result, Acc = 0; result = L_msu(Acc,s1,s2); // Expected value of result: 0.25