use Mux in fp corrections
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 25 Aug 2019 08:57:05 +0000 (09:57 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 25 Aug 2019 08:57:05 +0000 (09:57 +0100)
src/ieee754/fpcommon/corrections.py

index 3a06916741b564a53db64e2709478f77e8d421e2..54e8bd2d6a9632f12f82d513611f712e4df2be11 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright (C) Jonathan P Dawson 2013
 # 2013-12-12
 
-from nmigen import Module
+from nmigen import Module, Mux
 from nmigen.cli import main, verilog
 
 from nmutil.pipemodbase import PipeModBase
@@ -23,11 +23,11 @@ class FPCorrectionsMod(PipeModBase):
 
     def elaborate(self, platform):
         m = Module()
+        comb = m.d.comb
         m.submodules.corr_in_z = in_z = FPNumBase(self.i.z)
-        m.d.comb += self.o.eq(self.i) # copies mid, z, out_do_z
-        with m.If(~self.i.out_do_z):
-            with m.If(in_z.is_denormalised):
-                m.d.comb += self.o.z.e.eq(self.i.z.N127)
+        comb += self.o.eq(self.i) # copies mid, z, out_do_z
+        comb += self.o.z.e.eq(Mux(in_z.is_denormalised,
+                                  self.i.z.N127, self.i.z.e))
         return m