From 2499cbdebc3936bda6fd863eaa1734cf760bfe38 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 6 Jan 2025 07:28:23 -0800 Subject: [PATCH] Pass literal zeros since these array indexes are never initialized. --- src/lib/workers/powgpu.ts | 174 +++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/lib/workers/powgpu.ts b/src/lib/workers/powgpu.ts index 65df379..7ed21b1 100644 --- a/src/lib/workers/powgpu.ts +++ b/src/lib/workers/powgpu.ts @@ -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; + var m: array; 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 -- 2.34.1