]> zoso.dev Git - libnemo.git/commitdiff
Pass literal zeros since these array indexes are never initialized.
authorChris Duncan <chris@zoso.dev>
Mon, 6 Jan 2025 15:28:23 +0000 (07:28 -0800)
committerChris Duncan <chris@zoso.dev>
Mon, 6 Jan 2025 15:28:23 +0000 (07:28 -0800)
src/lib/workers/powgpu.ts

index 65df379f7069e28d2737201cdfc799f2e1b8aa57..7ed21b1c1d129bb494d9d7889c5d93161ad1b8d8 100644 (file)
@@ -202,7 +202,7 @@ export class PowGpu extends WorkerInterface {
                        * Reference implementation uses uint64_t whereas we have u32
                        * Array length increased from original 16 to 32 to compensate
                        */
-                       var m: array<u32, 32>;
+                       var m: array<u32, 10>;
                        m[0u] = ubo.random;
                        m[1u] = ubo.random ^ id;
                        m[2u] = ubo.blockhash[0u].x;
@@ -286,122 +286,122 @@ export class PowGpu extends WorkerInterface {
                        // ROUND(0)
                        G(&v, 0u, 8u, 16u, 24u, m[0u], m[1u], m[2u], m[3u]);
                        G(&v, 2u, 10u, 18u, 26u, m[4u], m[5u], m[6u], m[7u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[8u], m[9u], m[10u], m[11u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[12u], m[13u], m[14u], m[15u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[16u], m[17u], m[18u], m[19u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[20u], m[21u], m[22u], m[23u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[24u], m[25u], m[26u], m[27u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[28u], m[29u], m[30u], m[31u]);
+                       G(&v, 4u, 12u, 20u, 28u, m[8u], m[9u], 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(1)
-                       G(&v, 0u, 8u, 16u, 24u, m[28u], m[29u], m[20u], m[21u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[8u], m[9u], m[16u], m[17u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[18u], m[19u], m[30u], m[31u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[26u], m[27u], m[12u], m[13u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[2u], m[3u], m[24u], m[25u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, m[8u], m[9u], 0u, 0u);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, m[2u], m[3u], 0u, 0u);
                        G(&v, 2u, 12u, 22u, 24u, m[0u], m[1u], m[4u], m[5u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[22u], m[23u], m[14u], m[15u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[10u], m[11u], m[6u], m[7u]);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, m[6u], m[7u]);
 
                        // ROUND(2)
-                       G(&v, 0u, 8u, 16u, 24u, m[22u], m[23u], m[16u], m[17u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[24u], m[25u], m[0u], m[1u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[10u], m[11u], m[4u], m[5u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[30u], m[31u], m[26u], m[27u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[20u], m[21u], m[28u], m[29u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[6u], m[7u], m[12u], m[13u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[14u], m[15u], m[2u], m[3u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[18u], m[19u], m[8u], m[9u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, 0u, 0u, m[0u], m[1u]);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, m[4u], m[5u]);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, m[6u], m[7u], 0u, 0u);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, m[2u], m[3u]);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, m[8u], m[9u]);
 
                        // ROUND(3)
-                       G(&v, 0u, 8u, 16u, 24u, m[14u], m[15u], m[18u], m[19u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
                        G(&v, 2u, 10u, 18u, 26u, m[6u], m[7u], m[2u], m[3u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[26u], m[27u], m[24u], m[25u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[22u], m[23u], m[28u], m[29u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[4u], m[5u], m[12u], m[13u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[10u], m[11u], m[20u], m[21u]);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, m[4u], m[5u], 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
                        G(&v, 4u, 14u, 16u, 26u, m[8u], m[9u], m[0u], m[1u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[30u], m[31u], m[16u], m[17u]);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(4)
-                       G(&v, 0u, 8u, 16u, 24u, m[18u], m[19u], m[0u], m[1u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[10u], m[11u], m[14u], m[15u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, m[0u], m[1u]);
+                       G(&v, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
                        G(&v, 4u, 12u, 20u, 28u, m[4u], m[5u], m[8u], m[9u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[20u], m[21u], m[30u], m[31u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[28u], m[29u], m[2u], m[3u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[22u], m[23u], m[24u], m[25u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[12u], m[13u], m[16u], m[17u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[6u], m[7u], m[26u], m[27u]);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, m[2u], m[3u]);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, m[6u], m[7u], 0u, 0u);
 
                        // ROUND(5)
-                       G(&v, 0u, 8u, 16u, 24u, m[4u], m[5u], m[24u], m[25u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[12u], m[13u], m[20u], m[21u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[0u], m[1u], m[22u], m[23u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[16u], m[17u], m[6u], m[7u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[8u], m[9u], m[26u], m[27u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[14u], m[15u], m[10u], m[11u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[30u], m[31u], m[28u], m[29u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[2u], m[3u], m[18u], m[19u]);
+                       G(&v, 0u, 8u, 16u, 24u, m[4u], m[5u], 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 12u, 20u, 28u, m[0u], m[1u], 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, m[6u], m[7u]);
+                       G(&v, 0u, 10u, 20u, 30u, m[8u], m[9u], 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, m[2u], m[3u], 0u, 0u);
 
                        // ROUND(6)
-                       G(&v, 0u, 8u, 16u, 24u, m[24u], m[25u], m[10u], m[11u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[2u], m[3u], m[30u], m[31u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[28u], m[29u], m[26u], m[27u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[8u], m[9u], m[20u], m[21u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[0u], m[1u], m[14u], m[15u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[12u], m[13u], m[6u], m[7u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[18u], m[19u], m[4u], m[5u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[16u], m[17u], m[22u], m[23u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, m[2u], m[3u], 0u, 0u);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, m[8u], m[9u], 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, m[0u], m[1u], 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, m[6u], m[7u]);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, m[4u], m[5u]);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(7)
-                       G(&v, 0u, 8u, 16u, 24u, m[26u], m[27u], m[22u], m[23u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[14u], m[15u], m[28u], m[29u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[24u], m[25u], m[2u], m[3u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[6u], m[7u], m[18u], m[19u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[10u], m[11u], m[0u], m[1u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[30u], m[31u], m[8u], m[9u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[16u], m[17u], m[12u], m[13u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[4u], m[5u], m[20u], m[21u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, m[2u], m[3u]);
+                       G(&v, 6u, 14u, 22u, 30u, m[6u], m[7u], 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, m[0u], m[1u]);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, m[8u], m[9u]);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, m[4u], m[5u], 0u, 0u);
 
                        // ROUND(8)
-                       G(&v, 0u, 8u, 16u, 24u, m[12u], m[13u], m[30u], m[31u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[28u], m[29u], m[18u], m[19u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[22u], m[23u], m[6u], m[7u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[0u], m[1u], m[16u], m[17u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[24u], m[25u], m[4u], m[5u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[26u], m[27u], m[14u], m[15u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, m[6u], m[7u]);
+                       G(&v, 6u, 14u, 22u, 30u, m[0u], m[1u], 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, m[4u], m[5u]);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
                        G(&v, 4u, 14u, 16u, 26u, m[2u], m[3u], m[8u], m[9u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[20u], m[21u], m[10u], m[11u]);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(9)
-                       G(&v, 0u, 8u, 16u, 24u, m[20u], m[21u], m[4u], m[5u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[16u], m[17u], m[8u], m[9u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[14u], m[15u], m[12u], m[13u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[2u], m[3u], m[10u], m[11u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[30u], m[31u], m[22u], m[23u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[18u], m[19u], m[28u], m[29u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[6u], m[7u], m[24u], m[25u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[26u], m[27u], m[0u], m[1u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, m[4u], m[5u]);
+                       G(&v, 2u, 10u, 18u, 26u, 0u, 0u, m[8u], m[9u]);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, m[2u], m[3u], 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 14u, 16u, 26u, m[6u], m[7u], 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, m[0u], m[1u]);
 
                        // ROUND(10)
                        G(&v, 0u, 8u, 16u, 24u, m[0u], m[1u], m[2u], m[3u]);
                        G(&v, 2u, 10u, 18u, 26u, m[4u], m[5u], m[6u], m[7u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[8u], m[9u], m[10u], m[11u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[12u], m[13u], m[14u], m[15u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[16u], m[17u], m[18u], m[19u]);
-                       G(&v, 2u, 12u, 22u, 24u, m[20u], m[21u], m[22u], m[23u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[24u], m[25u], m[26u], m[27u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[28u], m[29u], m[30u], m[31u]);
+                       G(&v, 4u, 12u, 20u, 28u, m[8u], m[9u], 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 12u, 22u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, 0u, 0u);
 
                        // ROUND(11)
-                       G(&v, 0u, 8u, 16u, 24u, m[28u], m[29u], m[20u], m[21u]);
-                       G(&v, 2u, 10u, 18u, 26u, m[8u], m[9u], m[16u], m[17u]);
-                       G(&v, 4u, 12u, 20u, 28u, m[18u], m[19u], m[30u], m[31u]);
-                       G(&v, 6u, 14u, 22u, 30u, m[26u], m[27u], m[12u], m[13u]);
-                       G(&v, 0u, 10u, 20u, 30u, m[2u], m[3u], m[24u], m[25u]);
+                       G(&v, 0u, 8u, 16u, 24u, 0u, 0u, 0u, 0u);
+                       G(&v, 2u, 10u, 18u, 26u, m[8u], m[9u], 0u, 0u);
+                       G(&v, 4u, 12u, 20u, 28u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 14u, 22u, 30u, 0u, 0u, 0u, 0u);
+                       G(&v, 0u, 10u, 20u, 30u, m[2u], m[3u], 0u, 0u);
                        G(&v, 2u, 12u, 22u, 24u, m[0u], m[1u], m[4u], m[5u]);
-                       G(&v, 4u, 14u, 16u, 26u, m[22u], m[23u], m[14u], m[15u]);
-                       G(&v, 6u, 8u, 18u, 28u, m[10u], m[11u], m[6u], m[7u]);
+                       G(&v, 4u, 14u, 16u, 26u, 0u, 0u, 0u, 0u);
+                       G(&v, 6u, 8u, 18u, 28u, 0u, 0u, m[6u], m[7u]);
 
                        /**
                        * Set nonce if it passes the threshold and no other thread has set it