]> zoso.dev Git - nano-pow.git/commitdiff
Replace more scalar addition with vector addition.
authorChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 16:36:29 +0000 (08:36 -0800)
committerChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 16:36:29 +0000 (08:36 -0800)
src/shaders/compute.wgsl

index c8b6f839d9bb03bd1422f29829d8fb8c39e58f44..a7a8ddc654c6c6173785035e5c62b56d5fed8937 100644 (file)
@@ -784,11 +784,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -807,11 +811,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -820,11 +828,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -843,11 +855,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -1528,11 +1544,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -1551,11 +1571,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -1564,11 +1588,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v6 + m6;
@@ -1584,11 +1612,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -2269,11 +2301,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -2292,11 +2328,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -2305,11 +2345,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v6 + m8;
@@ -2325,11 +2369,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -3007,11 +3055,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -3030,11 +3082,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -3043,11 +3099,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -3066,11 +3126,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -3751,11 +3815,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v6 + m6;
@@ -3771,11 +3839,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -3784,11 +3856,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -3807,11 +3883,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -4492,11 +4572,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v6 + m2;
@@ -4512,11 +4596,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -4525,11 +4613,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -4548,11 +4640,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -5230,11 +5326,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -5253,11 +5353,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -5266,11 +5370,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -5289,11 +5397,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -5974,11 +6086,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v6 + m4;
@@ -5994,11 +6110,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -6007,11 +6127,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -6030,11 +6154,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -6712,11 +6840,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -6735,11 +6867,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -6748,11 +6884,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -6771,11 +6911,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -7456,11 +7600,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -7479,11 +7627,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -7492,11 +7644,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v6 + m0;
@@ -7512,11 +7668,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -8194,11 +8354,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -8217,11 +8381,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -8230,11 +8398,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+1]]
        // // skip since adding 0u does nothing
@@ -8253,11 +8425,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;
@@ -8938,11 +9114,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        */
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // // a = a + m[sigma[r][2*i+0]]
        // // skip since adding 0u does nothing
@@ -8961,11 +9141,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = xor0;
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v8 ^ v18;
@@ -8974,11 +9158,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v9 = (xor1 >> 24u) ^ (xor0 << 8u);
 
        // a = a + b
-       o0 = v6 + v8;
-       o1 = v7 + v9;
-       o1 = o1 + select(0u, 1u, o0 < v6);
-       v6 = o0;
-       v7 = o1;
+       v_67.x = v6;
+       v_67.y = v7;
+       v_89.x = v8;
+       v_89.y = v9;
+       v_67 = v_67 + v_89 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_67.x + v_89.x < v_67.x);
+       v6 = v_67.x;
+       v7 = v_67.y;
+       v8 = v_89.x;
+       v9 = v_89.y;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v6 + m6;
@@ -8994,11 +9182,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v29 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v28;
-       o1 = v19 + v29;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2829.x = v28;
+       v_2829.y = v29;
+       v_1819 = v_1819 + v_2829 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2829.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v28 = v_2829.x;
+       v29 = v_2829.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v8 ^ v18;