split out bigshift
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 26 Apr 2022 14:18:08 +0000 (15:18 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 26 Apr 2022 14:18:08 +0000 (15:18 +0100)
openpower/sv/biginteger/divgnu64.c

index 6a94c66ca17a67b911d0c31c7a188c482b607c7f..483f099a54e3e04cdaeef48827541397e3dc0c06 100644 (file)
@@ -56,6 +56,13 @@ void dumpit(char *msg, int n, unsigned v[])
     printf("\n");
 }
 
+void bigrsh(unsigned s, unsigned r[], unsigned un[], int n)
+{
+    for (int i = 0; i < n - 1; i++)
+        r[i] = (un[i] >> s) | ((unsigned long long)un[i + 1] << (32 - s));
+    r[n - 1] = un[n - 1] >> s;
+}
+
 bool bigmul(unsigned long long qhat, unsigned product[], unsigned vn[], int m,
             int n)
 {
@@ -210,9 +217,7 @@ int divmnu(unsigned q[], unsigned r[], const unsigned u[], const unsigned v[],
     // it and pass it back.
     if (r != NULL)
     {
-        for (i = 0; i < n - 1; i++)
-            r[i] = (un[i] >> s) | ((unsigned long long)un[i + 1] << (32 - s));
-        r[n - 1] = un[n - 1] >> s;
+        bigrsh(s, r, un, n);
     }
     return 0;
 }