Itanium(R) processor topicFixed-point Multiply Add Instruction

xma

Operation Font Conventions

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.


Related Topics:

add - Add Instruction

addp - Add Pointer Instruction

and - Logical AND 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

shladd - Shift Left and Add Instruction

shladdp - Shift Left and Add Pointer Instruction