From 46d617c6c1e4f790d56229a1524c9baa6b03d9fb Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 6 Jan 2025 18:26:32 -0800 Subject: [PATCH] Replace v[c] indexes with pointers. --- src/lib/workers/powgpu.ts | 192 +++++++++++++++++++------------------- 1 file changed, 96 insertions(+), 96 deletions(-) diff --git a/src/lib/workers/powgpu.ts b/src/lib/workers/powgpu.ts index 17f5ca0..5200107 100644 --- a/src/lib/workers/powgpu.ts +++ b/src/lib/workers/powgpu.ts @@ -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, &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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, m0, m1, m2, m3); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, m4, m5, m6, m7); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, m8, m9, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, 0u, 0u); // ROUND(1) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, m8, m9, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, m2, m3, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, m0, m1, m4, m5); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, m6, m7); // ROUND(2) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, 0u, 0u, m0, m1); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, m4, m5); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, m6, m7, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, m2, m3); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, m8, m9); // ROUND(3) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, m6, m7, m2, m3); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, m4, m5, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, m8, m9, m0, m1); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, 0u, 0u); // ROUND(4) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, m0, m1); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, m4, m5, m8, m9); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, m2, m3); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, m6, m7, 0u, 0u); // ROUND(5) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, m4, m5, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, m0, m1, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, m6, m7); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, m8, m9, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, m2, m3, 0u, 0u); // ROUND(6) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, m2, m3, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, m8, m9, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, m0, m1, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, m6, m7); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, m4, m5); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, 0u, 0u); // ROUND(7) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, m2, m3); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, m6, m7, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, m0, m1); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, m8, m9); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, m4, m5, 0u, 0u); // ROUND(8) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, m6, m7); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, m0, m1, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, m4, m5); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, m2, m3, m8, m9); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, 0u, 0u); // ROUND(9) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, m4, m5); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, 0u, 0u, m8, m9); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, m2, m3, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, m6, m7, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, m0, m1); // ROUND(10) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, m0, m1, m2, m3); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, m4, m5, m6, m7); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, m8, m9, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, 0u, 0u, 0u, 0u); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, 0u, 0u); // ROUND(11) - 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); + G(&v, &v0, &v1, &v8, &v9, &v16, &v17, 24u, 0u, 0u, 0u, 0u); + G(&v, &v2, &v3, &v10, &v11, &v18, &v19, 26u, m8, m9, 0u, 0u); + G(&v, &v4, &v5, &v12, &v13, &v20, &v21, 28u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v14, &v15, &v22, &v23, 30u, 0u, 0u, 0u, 0u); + G(&v, &v0, &v1, &v10, &v11, &v20, &v21, 30u, m2, m3, 0u, 0u); + G(&v, &v2, &v3, &v12, &v13, &v22, &v23, 24u, m0, m1, m4, m5); + G(&v, &v4, &v5, &v14, &v15, &v16, &v17, 26u, 0u, 0u, 0u, 0u); + G(&v, &v6, &v7, &v8, &v9, &v18, &v19, 28u, 0u, 0u, m6, m7); /** * Set nonce if it passes the threshold and no other thread has set it -- 2.34.1