A functional unit is added to a graphics processor to provide direct
support for double-precision arithmetic, in addition to the
single-precision functional units used for rendering. The
double-precision functional unit can execute a number of different
operations, including fused multiply-add, on double-precision inputs
using data paths and/or logic circuits that are at least double-precision
width. The double-precision and single-precision functional units can be
controlled by a shared instruction issue circuit, and the number of
copies of the double-precision functional unit included in a core can be
less than the number of copies of the single-precision functional units,
thereby reducing the effect of adding support for double-precision on
chip area.