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

52 lines
1.5 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
module FPUFMAPipe_l3_f32(
input clock,
reset,
io_in_valid,
io_in_bits_ren3,
io_in_bits_swap23,
input [2:0] io_in_bits_rm,
input [1:0] io_in_bits_fmaCmd,
input [64:0] io_in_bits_in1,
io_in_bits_in2,
io_in_bits_in3,
output [64:0] io_out_bits_data,
output [4:0] io_out_bits_exc
);
wire [32:0] _fma_io_out;
reg valid;
reg [2:0] in_rm;
reg [1:0] in_fmaCmd;
reg [64:0] in_in1;
reg [64:0] in_in2;
reg [64:0] in_in3;
always @(posedge clock) begin
valid <= io_in_valid;
if (io_in_valid) begin
in_rm <= io_in_bits_rm;
in_fmaCmd <= io_in_bits_fmaCmd;
in_in1 <= io_in_bits_in1;
in_in2 <= io_in_bits_swap23 ? 65'h80000000 : io_in_bits_in2;
in_in3 <=
io_in_bits_ren3 | io_in_bits_swap23
? io_in_bits_in3
: {32'h0, io_in_bits_in1[32] ^ io_in_bits_in2[32], 32'h0};
end
end // always @(posedge)
MulAddRecFNPipe_l2_e8_s24 fma (
.clock (clock),
.reset (reset),
.io_validin (valid),
.io_op (in_fmaCmd),
.io_a (in_in1[32:0]),
.io_b (in_in2[32:0]),
.io_c (in_in3[32:0]),
.io_roundingMode (in_rm),
.io_out (_fma_io_out),
.io_exceptionFlags (io_out_bits_exc)
);
assign io_out_bits_data = {32'h0, _fma_io_out};
endmodule