From a0ff98042c2c1fa89e7751457abc99d677e8f58d Mon Sep 17 00:00:00 2001 From: Katherine Parry Date: Fri, 27 May 2022 14:37:10 -0700 Subject: [PATCH] unpacker adds 1 to denorm expoents --- .../build/Linux-x86_64-GCC/softfloat.a | Bin 513510 -> 571590 bytes pipelined/src/fpu/fcvt.sv | 6 +- pipelined/src/fpu/fma.sv | 67 ++++----- pipelined/src/fpu/fpu.sv | 9 +- pipelined/src/fpu/unpack.sv | 132 +++++++++--------- pipelined/testbench/testbench-fp.sv | 46 +++--- 6 files changed, 119 insertions(+), 141 deletions(-) diff --git a/addins/SoftFloat-3e/build/Linux-x86_64-GCC/softfloat.a b/addins/SoftFloat-3e/build/Linux-x86_64-GCC/softfloat.a index 442544836bc5c22fe7bfc3bbe1541edbac4d77ad..69cd932a8c39140eb3b940cb0e8e364b76562fb6 100644 GIT binary patch literal 571590 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