max2771 spi liens has been added.
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
// Generated by CIRCT firtool-1.151.0
|
||||
module MulAddRecFNToRaw_postMul(
|
||||
input io_fromPreMul_isSigNaNAny,
|
||||
io_fromPreMul_isNaNAOrB,
|
||||
io_fromPreMul_isInfA,
|
||||
io_fromPreMul_isZeroA,
|
||||
io_fromPreMul_isInfB,
|
||||
io_fromPreMul_isZeroB,
|
||||
io_fromPreMul_signProd,
|
||||
io_fromPreMul_isNaNC,
|
||||
io_fromPreMul_isInfC,
|
||||
io_fromPreMul_isZeroC,
|
||||
input [9:0] io_fromPreMul_sExpSum,
|
||||
input io_fromPreMul_doSubMags,
|
||||
io_fromPreMul_CIsDominant,
|
||||
input [4:0] io_fromPreMul_CDom_CAlignDist,
|
||||
input [25:0] io_fromPreMul_highAlignedSigC,
|
||||
input io_fromPreMul_bit0AlignedSigC,
|
||||
input [48:0] io_mulAddResult,
|
||||
input [2:0] io_roundingMode,
|
||||
output io_invalidExc,
|
||||
io_rawOut_isNaN,
|
||||
io_rawOut_isInf,
|
||||
io_rawOut_isZero,
|
||||
io_rawOut_sign,
|
||||
output [9:0] io_rawOut_sExp,
|
||||
output [26:0] io_rawOut_sig
|
||||
);
|
||||
|
||||
wire roundingMode_min = io_roundingMode == 3'h2;
|
||||
wire opSignC = io_fromPreMul_signProd ^ io_fromPreMul_doSubMags;
|
||||
wire [25:0] _sigSum_T_3 =
|
||||
io_mulAddResult[48]
|
||||
? io_fromPreMul_highAlignedSigC + 26'h1
|
||||
: io_fromPreMul_highAlignedSigC;
|
||||
wire [49:0] CDom_absSigSum =
|
||||
io_fromPreMul_doSubMags
|
||||
? ~{_sigSum_T_3, io_mulAddResult[47:24]}
|
||||
: {1'h0,
|
||||
io_fromPreMul_highAlignedSigC[25:24],
|
||||
_sigSum_T_3[23:0],
|
||||
io_mulAddResult[47:25]};
|
||||
wire [80:0] _CDom_mainSig_T = {31'h0, CDom_absSigSum} << io_fromPreMul_CDom_CAlignDist;
|
||||
wire [8:0] CDom_reduced4SigExtra_shift =
|
||||
$unsigned($signed(9'sh100 >>> ~(io_fromPreMul_CDom_CAlignDist[4:2])));
|
||||
wire [50:0] notCDom_absSigSum =
|
||||
_sigSum_T_3[2]
|
||||
? ~{_sigSum_T_3[1:0], io_mulAddResult[47:0], io_fromPreMul_bit0AlignedSigC}
|
||||
: {_sigSum_T_3[1:0], io_mulAddResult[47:0], io_fromPreMul_bit0AlignedSigC}
|
||||
+ {50'h0, io_fromPreMul_doSubMags};
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_1 = |(notCDom_absSigSum[3:2]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_2 = |(notCDom_absSigSum[5:4]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_3 = |(notCDom_absSigSum[7:6]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_4 = |(notCDom_absSigSum[9:8]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_5 = |(notCDom_absSigSum[11:10]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_6 = |(notCDom_absSigSum[13:12]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_7 = |(notCDom_absSigSum[15:14]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_8 = |(notCDom_absSigSum[17:16]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_9 = |(notCDom_absSigSum[19:18]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_10 = |(notCDom_absSigSum[21:20]);
|
||||
wire notCDom_reduced2AbsSigSum_reducedVec_11 = |(notCDom_absSigSum[23:22]);
|
||||
wire [4:0] notCDom_normDistReduced2 =
|
||||
notCDom_absSigSum[50]
|
||||
? 5'h0
|
||||
: (|(notCDom_absSigSum[49:48]))
|
||||
? 5'h1
|
||||
: (|(notCDom_absSigSum[47:46]))
|
||||
? 5'h2
|
||||
: (|(notCDom_absSigSum[45:44]))
|
||||
? 5'h3
|
||||
: (|(notCDom_absSigSum[43:42]))
|
||||
? 5'h4
|
||||
: (|(notCDom_absSigSum[41:40]))
|
||||
? 5'h5
|
||||
: (|(notCDom_absSigSum[39:38]))
|
||||
? 5'h6
|
||||
: (|(notCDom_absSigSum[37:36]))
|
||||
? 5'h7
|
||||
: (|(notCDom_absSigSum[35:34]))
|
||||
? 5'h8
|
||||
: (|(notCDom_absSigSum[33:32]))
|
||||
? 5'h9
|
||||
: (|(notCDom_absSigSum[31:30]))
|
||||
? 5'hA
|
||||
: (|(notCDom_absSigSum[29:28]))
|
||||
? 5'hB
|
||||
: (|(notCDom_absSigSum[27:26]))
|
||||
? 5'hC
|
||||
: (|(notCDom_absSigSum[25:24]))
|
||||
? 5'hD
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_11
|
||||
? 5'hE
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_10
|
||||
? 5'hF
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_9
|
||||
? 5'h10
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_8
|
||||
? 5'h11
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_7
|
||||
? 5'h12
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_6
|
||||
? 5'h13
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_5
|
||||
? 5'h14
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_4
|
||||
? 5'h15
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_3
|
||||
? 5'h16
|
||||
: notCDom_reduced2AbsSigSum_reducedVec_2
|
||||
? 5'h17
|
||||
: {4'hC,
|
||||
~notCDom_reduced2AbsSigSum_reducedVec_1};
|
||||
wire [113:0] _notCDom_mainSig_T =
|
||||
{63'h0, notCDom_absSigSum} << {108'h0, notCDom_normDistReduced2, 1'h0};
|
||||
wire [16:0] notCDom_reduced4SigExtra_shift =
|
||||
$unsigned($signed(17'sh10000 >>> ~(notCDom_normDistReduced2[4:1])));
|
||||
wire notCDom_completeCancellation = _notCDom_mainSig_T[51:50] == 2'h0;
|
||||
wire notNaN_isInfProd = io_fromPreMul_isInfA | io_fromPreMul_isInfB;
|
||||
wire notNaN_isInfOut = notNaN_isInfProd | io_fromPreMul_isInfC;
|
||||
wire notNaN_addZeros =
|
||||
(io_fromPreMul_isZeroA | io_fromPreMul_isZeroB) & io_fromPreMul_isZeroC;
|
||||
assign io_invalidExc =
|
||||
io_fromPreMul_isSigNaNAny | io_fromPreMul_isInfA & io_fromPreMul_isZeroB
|
||||
| io_fromPreMul_isZeroA & io_fromPreMul_isInfB | ~io_fromPreMul_isNaNAOrB
|
||||
& notNaN_isInfProd & io_fromPreMul_isInfC & io_fromPreMul_doSubMags;
|
||||
assign io_rawOut_isNaN = io_fromPreMul_isNaNAOrB | io_fromPreMul_isNaNC;
|
||||
assign io_rawOut_isInf = notNaN_isInfOut;
|
||||
assign io_rawOut_isZero =
|
||||
notNaN_addZeros | ~io_fromPreMul_CIsDominant & notCDom_completeCancellation;
|
||||
assign io_rawOut_sign =
|
||||
notNaN_isInfProd & io_fromPreMul_signProd | io_fromPreMul_isInfC & opSignC
|
||||
| notNaN_addZeros & io_roundingMode != 3'h2 & io_fromPreMul_signProd & opSignC
|
||||
| notNaN_addZeros & roundingMode_min & (io_fromPreMul_signProd | opSignC)
|
||||
| ~notNaN_isInfOut & ~notNaN_addZeros
|
||||
& (io_fromPreMul_CIsDominant
|
||||
? opSignC
|
||||
: notCDom_completeCancellation
|
||||
? roundingMode_min
|
||||
: io_fromPreMul_signProd ^ _sigSum_T_3[2]);
|
||||
assign io_rawOut_sExp =
|
||||
io_fromPreMul_CIsDominant
|
||||
? io_fromPreMul_sExpSum - {9'h0, io_fromPreMul_doSubMags}
|
||||
: io_fromPreMul_sExpSum - {4'h0, notCDom_normDistReduced2, 1'h0};
|
||||
assign io_rawOut_sig =
|
||||
io_fromPreMul_CIsDominant
|
||||
? {_CDom_mainSig_T[49:24],
|
||||
(|{_CDom_mainSig_T[23:21],
|
||||
{|(CDom_absSigSum[20:17]),
|
||||
|(CDom_absSigSum[16:13]),
|
||||
|(CDom_absSigSum[12:9]),
|
||||
|(CDom_absSigSum[8:5]),
|
||||
|(CDom_absSigSum[4:1]),
|
||||
CDom_absSigSum[0]}
|
||||
& {CDom_reduced4SigExtra_shift[1],
|
||||
CDom_reduced4SigExtra_shift[2],
|
||||
CDom_reduced4SigExtra_shift[3],
|
||||
CDom_reduced4SigExtra_shift[4],
|
||||
CDom_reduced4SigExtra_shift[5],
|
||||
CDom_reduced4SigExtra_shift[6]}})
|
||||
| (io_fromPreMul_doSubMags
|
||||
? io_mulAddResult[23:0] != 24'hFFFFFF
|
||||
: (|(io_mulAddResult[24:0])))}
|
||||
: {_notCDom_mainSig_T[51:26],
|
||||
|{_notCDom_mainSig_T[25:23],
|
||||
{|{notCDom_reduced2AbsSigSum_reducedVec_11,
|
||||
notCDom_reduced2AbsSigSum_reducedVec_10},
|
||||
|{notCDom_reduced2AbsSigSum_reducedVec_9,
|
||||
notCDom_reduced2AbsSigSum_reducedVec_8},
|
||||
|{notCDom_reduced2AbsSigSum_reducedVec_7,
|
||||
notCDom_reduced2AbsSigSum_reducedVec_6},
|
||||
|{notCDom_reduced2AbsSigSum_reducedVec_5,
|
||||
notCDom_reduced2AbsSigSum_reducedVec_4},
|
||||
|{notCDom_reduced2AbsSigSum_reducedVec_3,
|
||||
notCDom_reduced2AbsSigSum_reducedVec_2},
|
||||
|{notCDom_reduced2AbsSigSum_reducedVec_1, |(notCDom_absSigSum[1:0])}}
|
||||
& {notCDom_reduced4SigExtra_shift[1],
|
||||
notCDom_reduced4SigExtra_shift[2],
|
||||
notCDom_reduced4SigExtra_shift[3],
|
||||
notCDom_reduced4SigExtra_shift[4],
|
||||
notCDom_reduced4SigExtra_shift[5],
|
||||
notCDom_reduced4SigExtra_shift[6]}}};
|
||||
endmodule
|
||||
|
||||
Reference in New Issue
Block a user