add twin MSB alignment / denormalisation (from FPMUL)
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 22 Jul 2019 12:06:42 +0000 (13:06 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 22 Jul 2019 12:06:42 +0000 (13:06 +0100)
src/ieee754/fpdiv/specialcases.py

index 5bbe5c40bd5db88fbd2644f3cfbd60be5cca1d68..2265631495145f0d2f731d305b6d0f1f6ab36459 100644 (file)
@@ -10,6 +10,7 @@ from nmutil.singlepipe import SimpleHandshake, StageChain
 from ieee754.fpcommon.fpbase import FPState, FPID
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.denorm import (FPSCData, FPAddDeNormMod)
 from ieee754.fpcommon.fpbase import FPState, FPID
 from ieee754.fpcommon.getop import FPADDBaseData
 from ieee754.fpcommon.denorm import (FPSCData, FPAddDeNormMod)
+from ieee754.fpmul.align import FPAlignModSingle
 
 
 class FPDIVSpecialCasesMod(Elaboratable):
 
 
 class FPDIVSpecialCasesMod(Elaboratable):
@@ -147,21 +148,22 @@ class FPDIVSpecialCasesDeNorm(FPState, SimpleHandshake):
         return FPADDBaseData(self.pspec) # SpecialCases ispec
 
     def ospec(self):
         return FPADDBaseData(self.pspec) # SpecialCases ispec
 
     def ospec(self):
-        return FPSCData(self.pspec, False) # DeNorm ospec
+        return FPSCData(self.pspec, False) # Align ospec
 
     def setup(self, m, i):
         """ links module to inputs and outputs
         """
         smod = FPDIVSpecialCasesMod(self.pspec)
         dmod = FPAddDeNormMod(self.pspec, False)
 
     def setup(self, m, i):
         """ links module to inputs and outputs
         """
         smod = FPDIVSpecialCasesMod(self.pspec)
         dmod = FPAddDeNormMod(self.pspec, False)
+        amod = FPAlignModSingle(self.pspec, False)
 
 
-        chain = StageChain([smod, dmod])
+        chain = StageChain([smod, dmod, amod])
         chain.setup(m, i)
 
         # only needed for break-out (early-out)
         # self.out_do_z = smod.o.out_do_z
 
         chain.setup(m, i)
 
         # only needed for break-out (early-out)
         # self.out_do_z = smod.o.out_do_z
 
-        self.o = dmod.o
+        self.o = amod.o
 
     def process(self, i):
         return self.o
 
     def process(self, i):
         return self.o