update comments/clarify
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 31 Jul 2019 21:23:42 +0000 (22:23 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 31 Jul 2019 21:23:42 +0000 (22:23 +0100)
src/ieee754/fpadd/align.py
src/ieee754/fpcommon/postnormalise.py

index c6071fe36c70a11a9f7666e1f69398c94c001664..0e2ad11904e3a2f1c606ad8b66f23f9f730fa12d 100644 (file)
@@ -71,9 +71,10 @@ class FPAddAlignSingleMod(PipeModBase):
 
         # temporary (muxed) input and output to be shifted
         width = self.pspec.width
+        espec = (len(self.i.a.e), True)
+
         t_inp = FPNumBaseRecord(width)
         t_out = FPNumBaseRecord(width)
-        espec = (len(self.i.a.e), True)
         msr = MultiShiftRMerge(self.i.a.m_width, espec)
         m.submodules.multishift_r = msr
 
@@ -94,7 +95,7 @@ class FPAddAlignSingleMod(PipeModBase):
             comb += t_out.s.eq(t_inp.s)
 
             comb += ediff.eq(self.i.a.e - self.i.b.e)   # a - b
-            comb += ediffr.eq(self.i.b.e - self.i.a.e)  # b - a
+            comb += ediffr.eq(-ediff)                   # b - a
             comb += elz.eq(self.i.a.e < self.i.b.e)     # ae < be
             comb += egz.eq(self.i.a.e > self.i.b.e)     # ae > be
 
index 5d0a6ac8f96583ac628a4b7d16063472dcbcc230..d9306f9ec2927c17aedea562ee8b5a8a5511f32e 100644 (file)
@@ -76,18 +76,21 @@ class FPNorm1ModSingle(PipeModBase):
         # initialise out from in (overridden below)
         m.d.comb += self.o.z.eq(insel_z)
         m.d.comb += Overflow.eq(of, i.of)
-        # normalisation increase/decrease conditions
-        decrease = Signal(reset_less=True)
-        increase = Signal(reset_less=True)
-        m.d.comb += decrease.eq(insel_z.m_msbzero & insel_z.exp_gt_n126)
-        m.d.comb += increase.eq(insel_z.exp_lt_n126)
-        # decrease exponent
         with m.If(~self.i.out_do_z):
-            # concatenate s/r/g with mantissa
+
+            # normalisation increase/decrease conditions
+            decrease = Signal(reset_less=True)
+            increase = Signal(reset_less=True)
+            m.d.comb += decrease.eq(insel_z.m_msbzero & insel_z.exp_gt_n126)
+            m.d.comb += increase.eq(insel_z.exp_lt_n126)
+
+            # concatenate s/r/g with mantissa.  (it was easier to do this
+            # than to have the mantissa contain the three extra bits)
             temp_m = Signal(mwid+2, reset_less=True)
             m.d.comb += temp_m.eq(Cat(i.of.sticky, i.of.round_bit, i.of.guard,
                                       insel_z.m)),
 
+            # decrease exponent
             with m.If(decrease):
                 # make sure that the amount to decrease by does NOT
                 # go below the minimum non-INF/NaN exponent