overflow detection in mullw and mulld off-by-one
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 15 Jul 2020 14:54:27 +0000 (15:54 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 15 Jul 2020 14:54:27 +0000 (15:54 +0100)
openpower/isa/fixedarith.mdwn

index 1931c72ece17a9f750040f85cf6aa0b6760e39c7..5f556607eb591fd3ecae0b7e0671b866ade49599 100644 (file)
@@ -350,8 +350,8 @@ Pseudo-code:
 
     prod[0:63] <- MULS((RA)[32:63], (RB)[32:63])
     RT <- prod
-    overflow <- ((prod[0:31] != 0x0000_0000) &
-                 (prod[0:31] != 0xffff_ffff))
+    overflow <- ((prod[0:32] != 0x0_0000_0000) &
+                 (prod[0:32] != 0x1_ffff_ffff))
 
 Special Registers Altered:
 
@@ -564,8 +564,8 @@ Pseudo-code:
 
     prod[0:127] <- MULS((RA), (RB))
     RT <- prod[64:127]
-    overflow <- ((prod[0:63] != 0x0000_0000_0000_0000) &
-                 (prod[0:63] != 0xffff_ffff_ffff_ffff))
+    overflow <- ((prod[0:64] != 0x0_0000_0000_0000_0000) &
+                 (prod[0:64] != 0x1_ffff_ffff_ffff_ffff))
 
 Special Registers Altered: