From: Chris Duncan Date: Tue, 14 Jan 2025 17:39:16 +0000 (-0800) Subject: Replace scalar addition involving v[0-1] and m with vector addition. X-Git-Tag: v2.0.0~128 X-Git-Url: https://zoso.dev/?a=commitdiff_plain;h=27786a37c8a4db696a96248e93836e3de0ffab28;p=nano-pow.git Replace scalar addition involving v[0-1] and m with vector addition. --- diff --git a/src/shaders/compute.wgsl b/src/shaders/compute.wgsl index a7a8ddc..1bb9f97 100644 --- a/src/shaders/compute.wgsl +++ b/src/shaders/compute.wgsl @@ -138,9 +138,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m0; - o1 = v1 + m1; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m0; + o1 = v_01.y + m1; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -179,9 +181,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m2; - o1 = v1 + m3; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m2; + o1 = v_01.y + m3; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -508,13 +512,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -552,13 +549,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -896,13 +886,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -940,13 +923,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -1276,9 +1252,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m2; - o1 = v1 + m3; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m2; + o1 = v_01.y + m3; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -1318,13 +1296,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -1653,13 +1624,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -1697,13 +1661,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -2031,13 +1988,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -2075,13 +2025,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -2410,13 +2353,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -2454,13 +2390,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -2787,9 +2716,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m4; - o1 = v1 + m5; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m4; + o1 = v_01.y + m5; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -2829,13 +2760,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -3167,13 +3091,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -3210,9 +3127,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m0; - o1 = v1 + m1; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m0; + o1 = v_01.y + m1; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -3542,13 +3461,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -3585,9 +3497,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m2; - o1 = v1 + m3; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m2; + o1 = v_01.y + m3; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -3923,9 +3837,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m4; - o1 = v1 + m5; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m4; + o1 = v_01.y + m5; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -3965,13 +3881,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -4298,9 +4207,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m8; - o1 = v1 + m9; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m8; + o1 = v_01.y + m9; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -4340,13 +4251,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -4681,13 +4585,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -4725,13 +4622,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -5058,9 +4948,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m0; - o1 = v1 + m1; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m0; + o1 = v_01.y + m1; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -5100,13 +4992,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -5438,13 +5323,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -5482,13 +5360,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -5816,13 +5687,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -5859,9 +5723,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m0; - o1 = v1 + m1; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m0; + o1 = v_01.y + m1; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -6195,13 +6061,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -6239,13 +6098,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -6573,13 +6425,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -6616,9 +6461,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m4; - o1 = v1 + m5; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m4; + o1 = v_01.y + m5; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -6952,13 +6799,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -6995,9 +6835,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m4; - o1 = v1 + m5; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m4; + o1 = v_01.y + m5; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -7327,13 +7169,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -7371,13 +7206,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -7708,9 +7536,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m0; - o1 = v1 + m1; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m0; + o1 = v_01.y + m1; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -7749,9 +7579,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v9 = v_89.y; // a = a + m[sigma[r][2*i+1]] - o0 = v0 + m2; - o1 = v1 + m3; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m2; + o1 = v_01.y + m3; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -8078,13 +7910,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v30 ^ v0; @@ -8122,13 +7947,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0; @@ -8466,13 +8284,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+0]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 32) xor0 = v24 ^ v0; @@ -8510,13 +8321,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v24 ^ v0; @@ -8846,9 +8650,11 @@ fn main(@builtin(global_invocation_id) id: vec3) { v11 = v_1011.y; // a = a + m[sigma[r][2*i+0]] - o0 = v0 + m2; - o1 = v1 + m3; - o1 = o1 + select(0u, 1u, o0 < v0); + o0 = v_01.x + m2; + o1 = v_01.y + m3; + o1 = o1 + select(0u, 1u, o0 < v_01.x); + v_01.x = o0; + v_01.y = o1; v0 = o0; v1 = o1; @@ -8888,13 +8694,6 @@ fn main(@builtin(global_invocation_id) id: vec3) { // // a = a + m[sigma[r][2*i+1]] // // skip since adding 0u does nothing - // o0 = v0 + 0u; - // o1 = v1 + 0u; - // if (v0 > 0xFFFFFFFFu - 0u) { - // o1 = o1 + 1u; - // } - // v0 = o0; - // v1 = o1; // d = rotr64(d ^ a, 16) xor0 = v30 ^ v0;