remove weirdness
[ieee754fpu.git] / src / ieee754 / fpadd / specialcases.py
index c11832dcb8d3ab550e7683049c247236d234efab..106d004b53b4294897c43b2d665626f8bd176ad9 100644 (file)
@@ -6,15 +6,15 @@ from nmigen import Module, Signal, Cat, Const
 from nmigen.cli import main, verilog
 from math import log
 
-from nmutil.pipemodbase import FPModBase, FPModBaseChain
+from nmutil.pipemodbase import PipeModBase, PipeModBaseChain
 from ieee754.fpcommon.fpbase import FPNumDecode
 
 from ieee754.fpcommon.fpbase import FPNumBaseRecord
-from ieee754.fpcommon.getop import FPADDBaseData
+from ieee754.fpcommon.basedata import FPBaseData
 from ieee754.fpcommon.denorm import (FPSCData, FPAddDeNormMod)
 
 
-class FPAddSpecialCasesMod(FPModBase):
+class FPAddSpecialCasesMod(PipeModBase):
     """ special cases: NaNs, infs, zeros, denormalised
         NOTE: some of these are unique to add.  see "Special Operations"
         https://steve.hollasch.net/cgindex/coding/ieeefloat.html
@@ -24,7 +24,7 @@ class FPAddSpecialCasesMod(FPModBase):
         super().__init__(pspec, "specialcases")
 
     def ispec(self):
-        return FPADDBaseData(self.pspec)
+        return FPBaseData(self.pspec)
 
     def ospec(self):
         return FPSCData(self.pspec, True)
@@ -69,29 +69,6 @@ class FPAddSpecialCasesMod(FPModBase):
         with m.If(abnan):
             comb += self.o.z.nan(0)
 
-        # XXX WEIRDNESS for FP16 non-canonical NaN handling
-        # under review
-
-        ## if a is zero and b is NaN return -b
-        #with m.If(a.is_zero & (a.s==0) & b.is_nan):
-        #    comb += self.o.out_do_z.eq(1)
-        #    comb += z.create(b.s, b.e, Cat(b.m[3:-2], ~b.m[0]))
-
-        ## if b is zero and a is NaN return -a
-        #with m.Elif(b.is_zero & (b.s==0) & a.is_nan):
-        #    comb += self.o.out_do_z.eq(1)
-        #    comb += z.create(a.s, a.e, Cat(a.m[3:-2], ~a.m[0]))
-
-        ## if a is -zero and b is NaN return -b
-        #with m.Elif(a.is_zero & (a.s==1) & b.is_nan):
-        #    comb += self.o.out_do_z.eq(1)
-        #    comb += z.create(a.s & b.s, b.e, Cat(b.m[3:-2], 1))
-
-        ## if b is -zero and a is NaN return -a
-        #with m.Elif(b.is_zero & (b.s==1) & a.is_nan):
-        #    comb += self.o.out_do_z.eq(1)
-        #    comb += z.create(a.s & b.s, a.e, Cat(a.m[3:-2], 1))
-
         # if a is inf return inf (or NaN)
         with m.Elif(a1.is_inf):
             comb += self.o.z.inf(a1.s)
@@ -129,7 +106,7 @@ class FPAddSpecialCasesMod(FPModBase):
         return m
 
 
-class FPAddSpecialCasesDeNorm(FPModBaseChain):
+class FPAddSpecialCasesDeNorm(PipeModBaseChain):
     """ special cases chain
     """