specialcases: sqrt of -ve zero is -ve zero
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 23 Jul 2019 16:44:32 +0000 (17:44 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 23 Jul 2019 16:44:32 +0000 (17:44 +0100)
src/ieee754/fpdiv/specialcases.py

index 628730260be13e20a05ed841662923a24b8d97d8..3b634bf3a5088c12e3955f585b8dc8eccf4a071b 100644 (file)
@@ -104,8 +104,13 @@ class FPDIVSpecialCasesMod(Elaboratable):
 
         with m.If(self.i.ctx.op == 1): # SQRT
 
+            # if a is zero return zero
+            with m.If(a1.is_zero):
+                m.d.comb += self.o.out_do_z.eq(1)
+                m.d.comb += self.o.z.zero(a1.s)
+
             # -ve number is NaN
-            with m.If(a1.s):
+            with m.Elif(a1.s):
                 m.d.comb += self.o.out_do_z.eq(1)
                 m.d.comb += self.o.z.nan(0)
 
@@ -119,11 +124,6 @@ class FPDIVSpecialCasesMod(Elaboratable):
                 m.d.comb += self.o.out_do_z.eq(1)
                 m.d.comb += self.o.z.nan(0)
 
-            # if a is zero return zero
-            with m.Elif(a1.is_zero):
-                m.d.comb += self.o.out_do_z.eq(1)
-                m.d.comb += self.o.z.zero(0)
-
             # Denormalised Number checks next, so pass a/b data through
             with m.Else():
                 m.d.comb += self.o.out_do_z.eq(0)