Fixed-point Multiply Add Instructionxma
Instruction Type F
Format
(qp) xma.l f1 = f3, f4, f2 low_form
(qp) xma.lu f1 = f3, f4, f2 pseudo-op of: ( qp) xma.l f1 = f3, f4, f2
(qp) xma.h f1 = f3, f4, f2 high_form
(qp) xma.hu f1 = f3, f4, f2 high_unsigned_form
Description
Two source operands (FR f3 and FR f4) are treated as either signed or unsigned integers and multiplied. The third source operand (FR f2) is zero extended and added to the product. The upper or lower 64 bits of the resultant sum are selected and placed in FR f1.
In the high_unsigned_form, the significand fields of FR f3 and FR f4 are treated as unsigned integers and multiplied to produce a full 128-bit unsigned result. The significand field of FR f2 is zero extended and added to the product. The most significant 64-bits of the resultant sum are placed in the significand field of FR f1.
In the high_form, the significand fields of FR f3 and FR f4 are treated as signed integers and multiplied to produce a full 128-bit signed result. The significand field of FR f2 is zero extended and added to the product. The most significant 64-bits of the resultant sum are placed in the significand field of FR f1.
In the other forms, the significand fields of FR f3 and FR f4 are treated as signed integers and multiplied to produce a full 128-bit signed result. The significand field of FR f2 is zero extended and added to the product. The least significant 64-bits of the resultant sum are placed in the significand field of FR f1.
In all forms, the exponent field of FR f1 is set to the biased exponent for 2.063 (0x1003E) and the sign field of FR f1 is set to positive (0). Note: f1 as an operand is not an integer 1; it is just the register file format's 1.0 value.
In all forms, if any of FR f3 , FR f4 , or FR f2 is a NaTVal, FR f1 is set to NaTVal instead of the computed result.
addp - Add Pointer Instruction
andcm - And Complement Instruction
fadd - Floating-point Add Instruction
fetchadd - Fetch and Add Immediate Instruction
fma - Floating-point Multiply Add Instruction
fmpy - Floating-point Multiply Instruction
fms - Floating-point Multiply Subtract Instruction
fnma - Floating-point Negative Multiply Add Instruction
fnmpy - Floating-point Negative Multiply Instruction
fpma - Floating-point Parallel Multiply Add Instruction
fpmpy - Floating-point Parallel Multiply Instruction
fpms - Floating-point Parallel Multiply Subtract Instruction
fpnma - Floating-point Parallel Negative Multiply Add Instruction
fpnmpy - Floating-point Parallel Negative Multiply Instruction
Integer Multiply and Add (in FP Unit) Instructions
mov gr - Move General Register Instruction
mov imm - Move Immediate Instruction
padd - Parallel Add Instruction
pmpy - Parallel Multiply Instruction
pmpyshr - Parallel Multiply and Shift Right Instruction
psad1 - Parallel Sum of Absolute Difference Instruction
pshladd - Parallel Shift Left and Add Instruction
pshradd - Parallel Shift Right and Add Instruction