diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-03-07 16:30:11 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-03-07 16:30:11 -0600 |
| commit | 9ecb54925bbbc218c183c0ee9cb3b27bf79e6e80 (patch) | |
| tree | 5e6d6de284a4d0af04499547ef81b9d53e02ab2d /platform/wavelet3d/gfx_pkg.sv | |
| parent | 3038edc09a2eb15762f2e58533f429489107520b (diff) | |
platform/wavelet3d: implement unified fp-integer lane
Diffstat (limited to '')
| -rw-r--r-- | platform/wavelet3d/gfx_pkg.sv | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/platform/wavelet3d/gfx_pkg.sv b/platform/wavelet3d/gfx_pkg.sv index e108d7d..cfab6a5 100644 --- a/platform/wavelet3d/gfx_pkg.sv +++ b/platform/wavelet3d/gfx_pkg.sv @@ -1,9 +1,10 @@ package gfx; - typedef logic[31:0] float_word; + typedef logic[31:0] word; + typedef logic[63:0] dword; typedef logic[7:0] float_exp; - typedef logic[$bits(float_word) - $bits(float_exp) - 2:0] float_mant; + typedef logic[$bits(word) - $bits(float_exp) - 2:0] float_mant; typedef logic[$bits(float_mant):0] float_mant_full; // Incluye '1.' explĂcito localparam float_exp FLOAT_EXP_BIAS = (1 << ($bits(float_exp) - 1)) - 1; @@ -40,14 +41,29 @@ package gfx; typedef struct packed { - float val; logic exp_max, exp_min, mant_zero; - } float_special; + } float_class; + + function float_class classify_float(float in); + classify_float.exp_max = &in.exp; + classify_float.exp_min = ~|in.exp; + classify_float.mant_zero = ~|in.mant; + endfunction + + function logic is_float_special(float_class in); + is_float_special = in.exp_max | (in.exp_min & ~in.mant_zero); + endfunction /* -> 4,4,4,4,4,4,4,4 -> 8,8,8,8 -> 16,16 -> 32 */ localparam FADD_CLZ_STAGES = 4; + typedef struct packed + { + logic fadd, + fmul; + } arith_op; + endpackage |
