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

29 lines
1.1 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
module RoundAnyRawFNToRecFN_1(
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 [32:0] io_out,
output [4:0] io_exceptionFlags
);
wire roundingMode_near_even = io_roundingMode == 3'h0;
wire _adjustedSig_T_2 = |(io_in_sig[38:0]);
wire anyRound = |{io_in_sig[39], _adjustedSig_T_2};
wire [25:0] roundedSig =
(roundingMode_near_even | io_roundingMode == 3'h4) & io_in_sig[39]
| (io_roundingMode == 3'h2 & io_in_sign | io_roundingMode == 3'h3 & ~io_in_sign)
& anyRound
? {1'h0, io_in_sig[64:40]} + 26'h1
& {25'h1FFFFFF, ~(roundingMode_near_even & io_in_sig[39] & ~_adjustedSig_T_2)}
: {1'h0, io_in_sig[64:40]} | {25'h0, io_roundingMode == 3'h6 & anyRound};
assign io_out =
{io_in_sign,
io_in_sExp + {7'h0, roundedSig[25:24]} + 9'h80 & ~(io_in_isZero ? 9'h1C0 : 9'h0),
io_in_isZero ? 23'h0 : roundedSig[22:0]};
assign io_exceptionFlags = {4'h0, ~io_in_isZero & anyRound};
endmodule