diff options
Diffstat (limited to '')
| -rw-r--r-- | rtl/gfx/vec_dot.sv | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/rtl/gfx/vec_dot.sv b/rtl/gfx/vec_dot.sv new file mode 100644 index 0000000..d984504 --- /dev/null +++ b/rtl/gfx/vec_dot.sv @@ -0,0 +1,40 @@ +`include "gfx/gfx_defs.sv" + +module vec_dot +( + input logic clk, + rst_n, + + input logic start, + input vec4 a, + b, + + output logic done, + output fp q +); + + vec4 products; + logic dones[`FLOATS_PER_VEC]; + + horizontal_fold #(.N(`FLOATS_PER_VEC)) fold + ( + .start(dones[0]), + .vec(products), + .* + ); + + genvar i; + generate + for (i = 0; i < `FLOATS_PER_VEC; ++i) begin: entries + fp_mul entry_i + ( + .a(a[i]), + .b(b[i]), + .done(dones[i]), + .q(products[i]), + .* + ); + end + endgenerate + +endmodule |
