]> zoso.dev Git - libnemo.git/commitdiff
Replace v[b] indexes with pointers.
authorChris Duncan <chris@zoso.dev>
Tue, 7 Jan 2025 01:57:00 +0000 (17:57 -0800)
committerChris Duncan <chris@zoso.dev>
Tue, 7 Jan 2025 01:57:00 +0000 (17:57 -0800)
src/lib/workers/powgpu.ts

index ab8b243f0b521997c26df137910924b3ecd4ac80..17f5ca05787536640144a4998705c19bc9909465 100644 (file)
@@ -251,124 +251,124 @@ export class PowGpu extends WorkerInterface {
                        * Twelve rounds of mixing as part of BLAKE2b compression step
                        */
                        // ROUND(0)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, m0, m1, m2, m3);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, m4, m5, m6, m7);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, m8, m9, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, m0, m1, m2, m3);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, m4, m5, m6, m7);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, m8, m9, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(1)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, m8, m9, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, m2, m3, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, m0, m1, m4, m5);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m6, m7);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, m8, m9, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, m2, m3, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, m0, m1, m4, m5);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, m6, m7);
 
                        // ROUND(2)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, m0, m1);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, m4, m5);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, m6, m7, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, m2, m3);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m8, m9);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, 0u, 0u, m0, m1);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, m4, m5);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, m6, m7, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, m2, m3);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, m8, m9);
 
                        // ROUND(3)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, m6, m7, m2, m3);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, m4, m5, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, m8, m9, m0, m1);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, m6, m7, m2, m3);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, m4, m5, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, m8, m9, m0, m1);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(4)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, m0, m1);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, m4, m5, m8, m9);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, m2, m3);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, m6, m7, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, m0, m1);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, m4, m5, m8, m9);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, m2, m3);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, m6, m7, 0u, 0u);
 
                        // ROUND(5)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, m4, m5, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, m0, m1, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, m6, m7);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, m8, m9, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, m2, m3, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, m4, m5, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, m0, m1, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, m6, m7);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, m8, m9, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, m2, m3, 0u, 0u);
 
                        // ROUND(6)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, m2, m3, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, m8, m9, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, m0, m1, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, m6, m7);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, m4, m5);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, m2, m3, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, m8, m9, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, m0, m1, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, m6, m7);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, m4, m5);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(7)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, m2, m3);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, m6, m7, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, m0, m1);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, m8, m9);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, m4, m5, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, m2, m3);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, m6, m7, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, m0, m1);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, m8, m9);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, m4, m5, 0u, 0u);
 
                        // ROUND(8)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, m6, m7);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, m0, m1, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, m4, m5);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, m2, m3, m8, m9);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, m6, m7);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, m0, m1, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, m4, m5);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, m2, m3, m8, m9);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(9)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, m4, m5);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, 0u, 0u, m8, m9);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, m2, m3, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, m6, m7, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m0, m1);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, m4, m5);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, 0u, 0u, m8, m9);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, m2, m3, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, m6, m7, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, m0, m1);
 
                        // ROUND(10)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, m0, m1, m2, m3);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, m4, m5, m6, m7);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, m8, m9, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, m0, m1, m2, m3);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, m4, m5, m6, m7);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, m8, m9, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(11)
-                       G(&v, &v0, &v1, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
-                       G(&v, &v2, &v3, 10u, 18u, 26u, m8, m9, 0u, 0u);
-                       G(&v, &v4, &v5, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
-                       G(&v, &v0, &v1, 10u, 20u, 30u, m2, m3, 0u, 0u);
-                       G(&v, &v2, &v3, 12u, 22u, 24u, m0, m1, m4, m5);
-                       G(&v, &v4, &v5, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
-                       G(&v, &v6, &v7, 8u, 18u, 28u, 0u, 0u, m6, m7);
+                       G(&v, &v0, &v1, &v8, &v9, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, &v2, &v3, &v10, &v11, 18u, 26u, m8, m9, 0u, 0u);
+                       G(&v, &v4, &v5, &v12, &v13, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v14, &v15, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, &v0, &v1, &v10, &v11, 20u, 30u, m2, m3, 0u, 0u);
+                       G(&v, &v2, &v3, &v12, &v13, 22u, 24u, m0, m1, m4, m5);
+                       G(&v, &v4, &v5, &v14, &v15, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, &v6, &v7, &v8, &v9, 18u, 28u, 0u, 0u, m6, m7);
 
                        /**
                        * Set nonce if it passes the threshold and no other thread has set it