3-352 Vol. 2A FMUL/FMULP/FIMUL—Multiply
INSTRUCTION SET REFERENCE, A-M
The FIMUL instructions convert an integer source operand to double extended-
precision floating-point format before performing the multiplication.
The sign of the result is always the exclusive-OR of the source signs, even if one or
more of the values being multiplied is 0 or ∞. When the source operand is an integer
0, it is treated as a +0.
The following table shows the results obtained when multiplying various classes of
numbers, assuming that neither overflow nor underflow occurs.
This instruction’s operation is the same in non-64-bit modes and 64-bit mode.
Operation
IF Instruction = FIMUL
THEN
DEST ← DEST ∗ ConvertToDoubleExtendedPrecisionFP(SRC);
ELSE (* Source operand is floating-point value *)
DEST ← DEST ∗ SRC;
FI;
IF Instruction
= FMULP
THEN
PopRegisterStack;
FI;
Table 3-34. FMUL/FMULP/FIMUL Results
DEST
−∞ −F −0 +0 +F+∞ NaN
−∞ +∞ +∞ **−∞ −∞ NaN
−F+∞ +F +0 −0 −F −∞ NaN
−I +∞ +F +0 −0 −F −∞ NaN
SRC −0*+0 +0 −0 −0*NaN
+0*−0 −0 +0 +0*NaN
+I
−∞ −F −0 +0 +F+∞ NaN
+F
−∞ −F −0 +0 +F+∞ NaN
+∞ −∞ −∞ **+∞ +∞ NaN
NaN NaN NaN NaN NaN NaN NaN NaN
NOTES:
F Means finite floating-point value.
IMeans Integer.
* Indicates invalid-arithmetic-operand (#IA) exception.