experiment expressing borrow as ~val+1 instead of -val
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 18 Apr 2022 19:33:31 +0000 (20:33 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 18 Apr 2022 19:33:31 +0000 (20:33 +0100)
openpower/sv/bitmanip/divmnu64.c

index 52f1715aa7ac42a50f1341a0d9bd1f799bb9154b..bc9b033b1b3e565417d5373c6e3f4c6bdaeb7143 100644 (file)
@@ -107,7 +107,7 @@ again:
         if (rhat < b) goto again;
       }
 
-#define MUL_RSUB_CARRY1
+#define SUB_MUL_BORROW
 #ifdef ORIGINAL
       // Multiply and subtract.
       k = 0;
@@ -141,7 +141,7 @@ again:
       // this is the new (odd) instruction
       for(int i = 0; i <= n; i++) {
          uint64_t value = (((uint64_t)phi[i]<<32) | plo[i]) - borrow;
-         borrow = -(uint32_t)(value >> 32);
+         borrow = ~(value >> 32)+1; // -(uint32_t)(value >> 32);
          un[i + j] = (uint32_t)value;
       }
       bool need_fixup = borrow != 0;