Files
gps/hardware/generated/genesys2-soc-verilog/RoundAnyRawFNToRecFN_2.sv
T
2026-08-06 22:14:52 +03:00

31 lines
1.1 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
module RoundAnyRawFNToRecFN_2(
input io_in_isZero,
io_in_sign,
input [8:0] io_in_sExp,
input [64:0] io_in_sig,
input [2:0] io_roundingMode,
output [64:0] io_out,
output [4:0] io_exceptionFlags
);
wire roundingMode_near_even = io_roundingMode == 3'h0;
wire _adjustedSig_T_2 = |(io_in_sig[9:0]);
wire anyRound = |{io_in_sig[10], _adjustedSig_T_2};
wire [54:0] roundedSig =
(roundingMode_near_even | io_roundingMode == 3'h4) & io_in_sig[10]
| (io_roundingMode == 3'h2 & io_in_sign | io_roundingMode == 3'h3 & ~io_in_sign)
& anyRound
? {1'h0, io_in_sig[64:11]} + 55'h1
& {54'h3FFFFFFFFFFFFF,
~(roundingMode_near_even & io_in_sig[10] & ~_adjustedSig_T_2)}
: {1'h0, io_in_sig[64:11]} | {54'h0, io_roundingMode == 3'h6 & anyRound};
assign io_out =
{io_in_sign,
{{3{io_in_sExp[8]}}, io_in_sExp} + {10'h0, roundedSig[54:53]} + 12'h780
& ~(io_in_isZero ? 12'hE00 : 12'h0),
io_in_isZero ? 52'h0 : roundedSig[51:0]};
assign io_exceptionFlags = {4'h0, ~io_in_isZero & anyRound};
endmodule