Entity

mulAddRecFNToRaw

in hardfloat_sys

extern entity mulAddRecFNToRaw<#uint expWidth, #uint sigWidth>(
    control: uint<1>,
    op: uint<2>,
    a: uint<{expWidth + sigWidth + 1}>,
    b: uint<{expWidth + sigWidth + 1}>,
    c: uint<{expWidth + sigWidth + 1}>,
    roundingMode: uint<3>,
    invalidExc: inv &bool,
    out_isNaN: inv &bool,
    out_isInf: inv &bool,
    out_isZero: inv &bool,
    out_sign: inv &bool,
    out_sExp: inv &int<{expWidth + 2}>,
    out_sig: inv &uint<{sigWidth + 3}>
);

Description taken from the Berkeley Hardfloat documentation:

Returns the intermediate result of the fused multiply-add before rounding, as a “raw” deconstructed floating-point value with two extra bits of significand. Boolean output invalidExc is true if the operation should raise an invalid exception. Module roundRawFNToRecFN can be used to round the intermediate result in conformance with the IEEE Standard.