]> zoso.dev Git - libnemo.git/commitdiff
Revert array pointer dereferencing to troubleshoot invalid nonces.
authorChris Duncan <chris@zoso.dev>
Tue, 7 Jan 2025 01:27:44 +0000 (17:27 -0800)
committerChris Duncan <chris@zoso.dev>
Tue, 7 Jan 2025 01:27:44 +0000 (17:27 -0800)
src/lib/workers/powgpu.ts

index 5a36170c215f02dbbaf765aa50c77ac322646878..c5cb6bc878520d1d39b43e525c589fd3428db361 100644 (file)
@@ -83,26 +83,26 @@ export class PowGpu extends WorkerInterface {
                        var xor1: u32;
 
                        // a = a + b;
-                       o0 = *va0 + (*v)[b];
-                       o1 = *va1 + (*v)[b+1u];
-                       if (*va0 > 0xFFFFFFFFu - (*v)[b]) {
+                       o0 = (*v)[a] + (*v)[b];
+                       o1 = (*v)[a+1u] + (*v)[b+1u];
+                       if ((*v)[a] > 0xFFFFFFFFu - (*v)[b]) {
                                o1 = o1 + 1u;
                        }
-                       *va0 = o0;
-                       *va1 = o1;
+                       (*v)[a] = o0;
+                       (*v)[a+1u] = o1;
 
                        // a = a + m[sigma[r][2*i+0]];
-                       o0 = *va0 + mx0;
-                       o1 = *va1 + mx1;
-                       if (*va0 > 0xFFFFFFFFu - mx0) {
+                       o0 = (*v)[a] + mx0;
+                       o1 = (*v)[a+1u] + mx1;
+                       if ((*v)[a] > 0xFFFFFFFFu - mx0) {
                                o1 = o1 + 1u;
                        }
-                       *va0 = o0;
-                       *va1 = o1;
+                       (*v)[a] = o0;
+                       (*v)[a+1u] = o1;
 
                        // d = rotr64(d ^ a, 32);
-                       xor0 = (*v)[d] ^ *va0;
-                       xor1 = (*v)[d+1u] ^ *va1;
+                       xor0 = (*v)[d] ^ (*v)[a];
+                       xor1 = (*v)[d+1u] ^ (*v)[a+1u];
                        (*v)[d] = xor1;
                        (*v)[d+1u] = xor0;
 
@@ -122,26 +122,26 @@ export class PowGpu extends WorkerInterface {
                        (*v)[b+1u] = (xor1 >> 24u) ^ (xor0 << 8u);
 
                        // a = a + b;
-                       o0 = *va0 + (*v)[b];
-                       o1 = *va1 + (*v)[b+1u];
-                       if (*va0 > 0xFFFFFFFFu - (*v)[b]) {
+                       o0 = (*v)[a] + (*v)[b];
+                       o1 = (*v)[a+1u] + (*v)[b+1u];
+                       if ((*v)[a] > 0xFFFFFFFFu - (*v)[b]) {
                                o1 = o1 + 1u;
                        }
-                       *va0 = o0;
-                       *va1 = o1;
+                       (*v)[a] = o0;
+                       (*v)[a+1u] = o1;
 
                        // a = a + m[sigma[r][2*i+1]];
-                       o0 = *va0 + my0;
-                       o1 = *va1 + my1;
-                       if (*va0 > 0xFFFFFFFFu - my0) {
+                       o0 = (*v)[a] + my0;
+                       o1 = (*v)[a+1u] + my1;
+                       if ((*v)[a] > 0xFFFFFFFFu - my0) {
                                o1 = o1 + 1u;
                        }
-                       *va0 = o0;
-                       *va1 = o1;
+                       (*v)[a] = o0;
+                       (*v)[a+1u] = o1;
 
                        // d = rotr64(d ^ a, 16)
-                       xor0 = (*v)[d] ^ *va0;
-                       xor1 = (*v)[d+1u] ^ *va1;
+                       xor0 = (*v)[d] ^ (*v)[a];
+                       xor1 = (*v)[d+1u] ^ (*v)[a+1u];
                        (*v)[d] = (xor0 >> 16u) ^ (xor1 << 16u);
                        (*v)[d+1u] = (xor1 >> 16u) ^ (xor0 << 16u);