From da75429477907370da56f6fb2fc236aab1c38c57 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 3 Feb 2025 19:54:31 -0800 Subject: [PATCH] Deprecate x and y temp vars for sixth through eighth round. --- src/shaders/compute.wgsl | 95 ++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 57 deletions(-) diff --git a/src/shaders/compute.wgsl b/src/shaders/compute.wgsl index ca7f2d8..dc91ce6 100644 --- a/src/shaders/compute.wgsl +++ b/src/shaders/compute.wgsl @@ -575,13 +575,11 @@ fn main(id: vec3) { ****************************************************************************/ /** - * r=5, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=?, m[sigma+1]=? - * r=5, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=?, m[sigma+1]=? + * r=5, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=2, m[sigma+1]=12 + * r=5, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=6, m[sigma+1]=10 */ - x = vec4(m2, VEC2_0); - v01 += v45 + vec4(0u, u32(v01.x + v45.x < v01.x), 0u, u32(v01.z + v45.z < v01.z)); - v01 += x + vec4(0u, u32(v01.x + x.x < v01.x), 0u, u32(v01.z + x.z < v01.z)); + v01 += vec4(m2, VEC2_0) + vec4(0u, u32(v01.x + m2.x < v01.x), 0u, 0u); vCD = (vCD ^ v01).yxwz; v89 += vCD + vec4(0u, u32(v89.x + vCD.x < v89.x), 0u, u32(v89.z + vCD.z < v89.z)); v45 = ((v45 ^ v89) >> ROTATE_24) | ((v45 ^ v89).yxwz << ROTATE_8); @@ -592,33 +590,29 @@ fn main(id: vec3) { v45 = ((v45 ^ v89) << ROTATE_1) | ((v45 ^ v89).yxwz >> ROTATE_31); /** - * r=5, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=?, m[sigma+1]=? - * r=5, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=?, m[sigma+1]=? + * r=5, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=0, m[sigma+1]=11 + * r=5, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=8, m[sigma+1]=3 */ - x = vec4(m0, VEC2_0); - y = vec4(VEC2_0, m3); - v23 += v67 + vec4(0u, u32(v23.x + v67.x < v23.x), 0u, u32(v23.z + v67.z < v23.z)); - v23 += x + vec4(0u, u32(v23.x + x.x < v23.x), 0u, u32(v23.z + x.z < v23.z)); + v23 += vec4(m0, VEC2_0) + vec4(0u, u32(v23.x + m0.x < v23.x), 0u, 0u); vEF = (vEF ^ v23).yxwz; vAB += vEF + vec4(0u, u32(vAB.x + vEF.x < vAB.x), 0u, u32(vAB.z + vEF.z < vAB.z)); v67 = ((v67 ^ vAB) >> ROTATE_24) | ((v67 ^ vAB).yxwz << ROTATE_8); v23 += v67 + vec4(0u, u32(v23.x + v67.x < v23.x), 0u, u32(v23.z + v67.z < v23.z)); - v23 += y + vec4(0u, u32(v23.x + y.x < v23.x), 0u, u32(v23.z + y.z < v23.z)); + v23 += vec4(VEC2_0, m3) + vec4(0u, 0u, 0u, u32(v23.z + m3.x < v23.z)); vEF = ((vEF ^ v23) >> ROTATE_16) | ((vEF ^ v23).yxwz << ROTATE_16); vAB += vEF + vec4(0u, u32(vAB.x + vEF.x < vAB.x), 0u, u32(vAB.z + vEF.z < vAB.z)); v67 = ((v67 ^ vAB) << ROTATE_1) | ((v67 ^ vAB).yxwz >> ROTATE_31); /** - * r=5, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=?, m[sigma+1]=? - * r=5, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=?, m[sigma+1]=? + * r=5, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=4, m[sigma+1]=13 + * r=5, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=7, m[sigma+1]=5 */ b = vec4(v45.zw, v67.xy); d = vec4(vEF.zw, vCD.xy); - x = vec4(m4, VEC2_0); v01 += b + vec4(0u, u32(v01.x + b.x < v01.x), 0u, u32(v01.z + b.z < v01.z)); - v01 += x + vec4(0u, u32(v01.x + x.x < v01.x), 0u, u32(v01.z + x.z < v01.z)); + v01 += vec4(m4, VEC2_0) + vec4(0u, u32(v01.x + m4.x < v01.x), 0u, 0u); d = (d ^ v01).yxwz; vAB += d + vec4(0u, u32(vAB.x + d.x < vAB.x), 0u, u32(vAB.z + d.z < vAB.z)); b = ((b ^ vAB) >> ROTATE_24) | ((b ^ vAB).yxwz << ROTATE_8); @@ -634,15 +628,14 @@ fn main(id: vec3) { vCD = vec4(d.zw, vCD.zw); /** - * r=5, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=?, m[sigma+1]=? - * r=5, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=?, m[sigma+1]=? + * r=5, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=15, m[sigma+1]=14 + * r=5, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=1, m[sigma+1]=9 */ b = vec4(v67.zw, v45.xy); d = vec4(vCD.zw, vEF.xy); - x = vec4(VEC2_0, m1); v23 += b + vec4(0u, u32(v23.x + b.x < v23.x), 0u, u32(v23.z + b.z < v23.z)); - v23 += x + vec4(0u, u32(v23.x + x.x < v23.x), 0u, u32(v23.z + x.z < v23.z)); + v23 += vec4(VEC2_0, m1) + vec4(0u, 0u, 0u, u32(v23.z + m1.x < v23.z)); d = (d ^ v23).yxwz; v89 += d + vec4(0u, u32(v89.x + d.x < v89.x), 0u, u32(v89.z + d.z < v89.z)); b = ((b ^ v89) >> ROTATE_24) | ((b ^ v89).yxwz << ROTATE_8); @@ -666,13 +659,11 @@ fn main(id: vec3) { ****************************************************************************/ /** - * r=6, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=?, m[sigma+1]=? - * r=6, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=?, m[sigma+1]=? + * r=6, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=12, m[sigma+1]=5 + * r=6, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=1, m[sigma+1]=15 */ - // x = vec4(VEC2_0, m1); // still assigned this value from last assignment at r=5 i=6/7 - v01 += v45 + vec4(0u, u32(v01.x + v45.x < v01.x), 0u, u32(v01.z + v45.z < v01.z)); - v01 += x + vec4(0u, u32(v01.x + x.x < v01.x), 0u, u32(v01.z + x.z < v01.z)); + v01 += vec4(VEC2_0, m1) + vec4(0u, 0u, 0u, u32(v01.z + m1.x < v01.z)); vCD = (vCD ^ v01).yxwz; v89 += vCD + vec4(0u, u32(v89.x + vCD.x < v89.x), 0u, u32(v89.z + vCD.z < v89.z)); v45 = ((v45 ^ v89) >> ROTATE_24) | ((v45 ^ v89).yxwz << ROTATE_8); @@ -683,13 +674,11 @@ fn main(id: vec3) { v45 = ((v45 ^ v89) << ROTATE_1) | ((v45 ^ v89).yxwz >> ROTATE_31); /** - * r=6, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=?, m[sigma+1]=? - * r=6, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=?, m[sigma+1]=? + * r=6, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=14, m[sigma+1]=13 + * r=6, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=4, m[sigma+1]=10 */ - x = vec4(VEC2_0, m4); - v23 += v67 + vec4(0u, u32(v23.x + v67.x < v23.x), 0u, u32(v23.z + v67.z < v23.z)); - v23 += x + vec4(0u, u32(v23.x + x.x < v23.x), 0u, u32(v23.z + x.z < v23.z)); + v23 += vec4(VEC2_0, m4) + vec4(0u, 0u, 0u, u32(v23.z + m4.x < v23.z)); vEF = (vEF ^ v23).yxwz; vAB += vEF + vec4(0u, u32(vAB.x + vEF.x < vAB.x), 0u, u32(vAB.z + vEF.z < vAB.z)); v67 = ((v67 ^ vAB) >> ROTATE_24) | ((v67 ^ vAB).yxwz << ROTATE_8); @@ -700,21 +689,19 @@ fn main(id: vec3) { v67 = ((v67 ^ vAB) << ROTATE_1) | ((v67 ^ vAB).yxwz >> ROTATE_31); /** - * r=6, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=?, m[sigma+1]=? - * r=6, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=?, m[sigma+1]=? + * r=6, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=0, m[sigma+1]=7 + * r=6, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=6, m[sigma+1]=3 */ b = vec4(v45.zw, v67.xy); d = vec4(vEF.zw, vCD.xy); - x = vec4(m0, VEC2_0); - // y = vec4(VEC2_0, m3); // still assigned this value from last assignment at r=5 i=4/5 v01 += b + vec4(0u, u32(v01.x + b.x < v01.x), 0u, u32(v01.z + b.z < v01.z)); - v01 += x + vec4(0u, u32(v01.x + x.x < v01.x), 0u, u32(v01.z + x.z < v01.z)); + v01 += vec4(m0, VEC2_0) + vec4(0u, u32(v01.x + m0.x < v01.x), 0u, 0u); d = (d ^ v01).yxwz; vAB += d + vec4(0u, u32(vAB.x + d.x < vAB.x), 0u, u32(vAB.z + d.z < vAB.z)); b = ((b ^ vAB) >> ROTATE_24) | ((b ^ vAB).yxwz << ROTATE_8); v01 += b + vec4(0u, u32(v01.x + b.x < v01.x), 0u, u32(v01.z + b.z < v01.z)); - v01 += y + vec4(0u, u32(v01.x + y.x < v01.x), 0u, u32(v01.z + y.z < v01.z)); + v01 += vec4(VEC2_0, m3) + vec4(0u, 0u, 0u, u32(v01.z + m3.x < v01.z)); d = ((d ^ v01) >> ROTATE_16) | ((d ^ v01).yxwz << ROTATE_16); vAB += d + vec4(0u, u32(vAB.x + d.x < vAB.x), 0u, u32(vAB.z + d.z < vAB.z)); b = ((b ^ vAB) << ROTATE_1) | ((b ^ vAB).yxwz >> ROTATE_31); @@ -725,12 +712,11 @@ fn main(id: vec3) { vCD = vec4(d.zw, vCD.zw); /** - * r=6, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=?, m[sigma+1]=? - * r=6, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=?, m[sigma+1]=? + * r=6, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=9, m[sigma+1]=2 + * r=6, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=8, m[sigma+1]=11 */ b = vec4(v67.zw, v45.xy); d = vec4(vCD.zw, vEF.xy); - y = vec4(m2, VEC2_0); v23 += b + vec4(0u, u32(v23.x + b.x < v23.x), 0u, u32(v23.z + b.z < v23.z)); // NOP @@ -738,7 +724,7 @@ fn main(id: vec3) { v89 += d + vec4(0u, u32(v89.x + d.x < v89.x), 0u, u32(v89.z + d.z < v89.z)); b = ((b ^ v89) >> ROTATE_24) | ((b ^ v89).yxwz << ROTATE_8); v23 += b + vec4(0u, u32(v23.x + b.x < v23.x), 0u, u32(v23.z + b.z < v23.z)); - v23 += y + vec4(0u, u32(v23.x + y.x < v23.x), 0u, u32(v23.z + y.z < v23.z)); + v23 += vec4(m2, VEC2_0) + vec4(0u, u32(v23.x + m2.x < v23.x), 0u, 0u); d = ((d ^ v23) >> ROTATE_16) | ((d ^ v23).yxwz << ROTATE_16); v89 += d + vec4(0u, u32(v89.x + d.x < v89.x), 0u, u32(v89.z + d.z < v89.z)); b = ((b ^ v89) << ROTATE_1) | ((b ^ v89).yxwz >> ROTATE_31); @@ -757,8 +743,8 @@ fn main(id: vec3) { ****************************************************************************/ /** - * r=7, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=?, m[sigma+1]=? - * r=7, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=?, m[sigma+1]=? + * r=7, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=13, m[sigma+1]=11 + * r=7, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=7, m[sigma+1]=14 */ v01 += v45 + vec4(0u, u32(v01.x + v45.x < v01.x), 0u, u32(v01.z + v45.z < v01.z)); // NOP @@ -772,30 +758,26 @@ fn main(id: vec3) { v45 = ((v45 ^ v89) << ROTATE_1) | ((v45 ^ v89).yxwz >> ROTATE_31); /** - * r=7, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=?, m[sigma+1]=? - * r=7, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=?, m[sigma+1]=? + * r=7, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=12, m[sigma+1]=1 + * r=7, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=3, m[sigma+1]=9 */ - x = vec4(VEC2_0, m3); - y = vec4(m1, VEC2_0); - v23 += v67 + vec4(0u, u32(v23.x + v67.x < v23.x), 0u, u32(v23.z + v67.z < v23.z)); - v23 += x + vec4(0u, u32(v23.x + x.x < v23.x), 0u, u32(v23.z + x.z < v23.z)); + v23 += vec4(VEC2_0, m3) + vec4(0u, 0u, 0u, u32(v23.z + m3.x < v23.z)); vEF = (vEF ^ v23).yxwz; vAB += vEF + vec4(0u, u32(vAB.x + vEF.x < vAB.x), 0u, u32(vAB.z + vEF.z < vAB.z)); v67 = ((v67 ^ vAB) >> ROTATE_24) | ((v67 ^ vAB).yxwz << ROTATE_8); v23 += v67 + vec4(0u, u32(v23.x + v67.x < v23.x), 0u, u32(v23.z + v67.z < v23.z)); - v23 += y + vec4(0u, u32(v23.x + y.x < v23.x), 0u, u32(v23.z + y.z < v23.z)); + v23 += vec4(m1, VEC2_0) + vec4(0u, u32(v23.x + m1.x < v23.x), 0u, 0u); vEF = ((vEF ^ v23) >> ROTATE_16) | ((vEF ^ v23).yxwz << ROTATE_16); vAB += vEF + vec4(0u, u32(vAB.x + vEF.x < vAB.x), 0u, u32(vAB.z + vEF.z < vAB.z)); v67 = ((v67 ^ vAB) << ROTATE_1) | ((v67 ^ vAB).yxwz >> ROTATE_31); /** - * r=7, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=?, m[sigma+1]=? - * r=7, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=?, m[sigma+1]=? + * r=7, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=5, m[sigma+1]=0 + * r=7, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=15, m[sigma+1]=4 */ b = vec4(v45.zw, v67.xy); d = vec4(vEF.zw, vCD.xy); - y = vec4(m0, m4); v01 += b + vec4(0u, u32(v01.x + b.x < v01.x), 0u, u32(v01.z + b.z < v01.z)); // NOP @@ -803,7 +785,7 @@ fn main(id: vec3) { vAB += d + vec4(0u, u32(vAB.x + d.x < vAB.x), 0u, u32(vAB.z + d.z < vAB.z)); b = ((b ^ vAB) >> ROTATE_24) | ((b ^ vAB).yxwz << ROTATE_8); v01 += b + vec4(0u, u32(v01.x + b.x < v01.x), 0u, u32(v01.z + b.z < v01.z)); - v01 += y + vec4(0u, u32(v01.x + y.x < v01.x), 0u, u32(v01.z + y.z < v01.z)); + v01 += vec4(m0, m4) + vec4(0u, u32(v01.x + m0.x < v01.x), 0u, u32(v01.z + m4.x < v01.z)); d = ((d ^ v01) >> ROTATE_16) | ((d ^ v01).yxwz << ROTATE_16); vAB += d + vec4(0u, u32(vAB.x + d.x < vAB.x), 0u, u32(vAB.z + d.z < vAB.z)); b = ((b ^ vAB) << ROTATE_1) | ((b ^ vAB).yxwz >> ROTATE_31); @@ -814,15 +796,14 @@ fn main(id: vec3) { vCD = vec4(d.zw, vCD.zw); /** - * r=7, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=?, m[sigma+1]=? - * r=7, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=?, m[sigma+1]=? + * r=7, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=8, m[sigma+1]=6 + * r=7, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=2, m[sigma+1]=10 */ b = vec4(v67.zw, v45.xy); d = vec4(vCD.zw, vEF.xy); - x = vec4(VEC2_0, m2); v23 += b + vec4(0u, u32(v23.x + b.x < v23.x), 0u, u32(v23.z + b.z < v23.z)); - v23 += x + vec4(0u, u32(v23.x + x.x < v23.x), 0u, u32(v23.z + x.z < v23.z)); + v23 += vec4(VEC2_0, m2) + vec4(0u, 0u, 0u, u32(v23.z + m2.x < v23.z)); d = (d ^ v23).yxwz; v89 += d + vec4(0u, u32(v89.x + d.x < v89.x), 0u, u32(v89.z + d.z < v89.z)); b = ((b ^ v89) >> ROTATE_24) | ((b ^ v89).yxwz << ROTATE_8); -- 2.34.1