]> zoso.dev Git - nano-pow.git/commitdiff
Revert m[sigma] inlining due to complexity.
authorChris Duncan <chris@zoso.dev>
Sun, 19 Jan 2025 23:54:53 +0000 (15:54 -0800)
committerChris Duncan <chris@zoso.dev>
Sun, 19 Jan 2025 23:54:53 +0000 (15:54 -0800)
src/shaders/compute.wgsl

index e9d83b89e5f9e442abf8ef5c081cec2658fe8d9f..dac36e2248f542080c87fc5b98d53796fff2bd4e 100644 (file)
@@ -119,11 +119,13 @@ fn main(id: vec3<u32>) {
        * sigma is a defined set of array indexes for `m`
        * rotr64 is a right-hand bit rotation function
        *
-       *       a = a + b + m[sigma[r][2*i+0]]
+       *       a = a + b
+       *       a = a + m[sigma[r][2*i+0]]
        *       d = rotr64(d ^ a, 32)
        *       c = c + d
        *       b = rotr64(b ^ c, 24)
-       *       a = a + b + m[sigma[r][2*i+1]]
+       *       a = a + b
+       *       a = a + m[sigma[r][2*i+1]]
        *       d = rotr64(d ^ a, 16)
        *       c = c + d
        *       b = rotr64(b ^ c, 63)
@@ -139,11 +141,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=0, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
        */
-       v0 = v0 + v4 + m0 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m0.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x));
        v12 = v12.yx ^ v0.yx;
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
-       v0 = v0 + v4 + m1 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m1.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x));
        v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
@@ -151,11 +155,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=0, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
        */
-       v1 = v1 + v5 + m2 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m2.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x));
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
-       v1 = v1 + v5 + m3 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m3.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x));
        v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
@@ -163,7 +169,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=0, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
        */
-       v2 = v2 + v6 + m4 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m4.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x));
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
@@ -255,7 +262,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=1, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
        */
-       v1 = v1 + v5 + m4 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m4.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x));
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
@@ -291,7 +299,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=1, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
        */
-       v0 = v0 + v5 + m1 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m1.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x));
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
@@ -303,11 +312,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=1, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
        */
-       v1 = v1 + v6 + m0 + vec2(0u, u32(v1.x + v6.x < v1.x)) + vec2(0u, u32(v1.x + v6.x + m0.x < v1.x + v6.x));
+       v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
+       v1 = v1 + m0 + vec2(0u, u32(v1.x + m0.x < v1.x));
        v12 = v12.yx ^ v1.yx;
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
-       v1 = v1 + v6 + m2 + vec2(0u, u32(v1.x + v6.x < v1.x)) + vec2(0u, u32(v1.x + v6.x + m2.x < v1.x + v6.x));
+       v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
+       v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x));
        v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
@@ -331,7 +342,8 @@ fn main(id: vec3<u32>) {
        v14 = v14.yx ^ v3.yx;
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
-       v3 = v3 + v4 + m3 + vec2(0u, u32(v3.x + v4.x < v3.x)) + vec2(0u, u32(v3.x + v4.x + m3.x < v3.x + v4.x));
+       v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
+       v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x));
        v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
@@ -363,7 +375,8 @@ fn main(id: vec3<u32>) {
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
-       v1 = v1 + v5 + m0 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m0.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m0 + vec2(0u, u32(v1.x + m0.x < v1.x));
        v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
@@ -375,7 +388,8 @@ fn main(id: vec3<u32>) {
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
-       v2 = v2 + v6 + m2 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m2.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m2 + vec2(0u, u32(v2.x + m2.x < v2.x));
        v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
@@ -407,7 +421,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=2, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
        */
-       v1 = v1 + v6 + m3 + vec2(0u, u32(v1.x + v6.x < v1.x)) + vec2(0u, u32(v1.x + v6.x + m3.x < v1.x + v6.x));
+       v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
+       v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x));
        v12 = v12.yx ^ v1.yx;
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
@@ -423,7 +438,8 @@ fn main(id: vec3<u32>) {
        v13 = v13.yx ^ v2.yx;
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
-       v2 = v2 + v7 + m1 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m1.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m1 + vec2(0u, u32(v2.x + m1.x < v2.x));
        v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
@@ -435,7 +451,8 @@ fn main(id: vec3<u32>) {
        v14 = v14.yx ^ v3.yx;
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
-       v3 = v3 + v4 + m4 + vec2(0u, u32(v3.x + v4.x < v3.x)) + vec2(0u, u32(v3.x + v4.x + m4.x < v3.x + v4.x));
+       v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
+       v3 = v3 + m4 + vec2(0u, u32(v3.x + m4.x < v3.x));
        v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
@@ -463,11 +480,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=3, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
        */
-       v1 = v1 + v5 + m3 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m3.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x));
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
-       v1 = v1 + v5 + m1 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m1.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m1 + vec2(0u, u32(v1.x + m1.x < v1.x));
        v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
@@ -499,7 +518,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=3, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
        */
-       v0 = v0 + v5 + m2 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m2.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x));
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
@@ -523,11 +543,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=3, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
        */
-       v2 = v2 + v7 + m4 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m4.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x));
        v13 = v13.yx ^ v2.yx;
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
-       v2 = v2 + v7 + m0 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m0.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m0 + vec2(0u, u32(v2.x + m0.x < v2.x));
        v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
@@ -559,7 +581,8 @@ fn main(id: vec3<u32>) {
        v12 = v12.yx ^ v0.yx;
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
-       v0 = v0 + v4 + m0 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m0.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x));
        v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
@@ -579,11 +602,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=4, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
        */
-       v2 = v2 + v6 + m2 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m2.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m2 + vec2(0u, u32(v2.x + m2.x < v2.x));
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
-       v2 = v2 + v6 + m4 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m4.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x));
        v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
@@ -607,7 +632,8 @@ fn main(id: vec3<u32>) {
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
-       v0 = v0 + v5 + m1 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m1.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x));
        v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
@@ -639,7 +665,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=4, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
        */
-       v3 = v3 + v4 + m3 + vec2(0u, u32(v3.x + v4.x < v3.x)) + vec2(0u, u32(v3.x + v4.x + m3.x < v3.x + v4.x));
+       v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
+       v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x));
        v14 = v14.yx ^ v3.yx;
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
@@ -659,7 +686,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=5, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
        */
-       v0 = v0 + v4 + m2 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m2.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x));
        v12 = v12.yx ^ v0.yx;
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
@@ -683,7 +711,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=5, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
        */
-       v2 = v2 + v6 + m0 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m0.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m0 + vec2(0u, u32(v2.x + m0.x < v2.x));
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
@@ -699,7 +728,8 @@ fn main(id: vec3<u32>) {
        v15 = v15.yx ^ v3.yx;
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
        v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
-       v3 = v3 + v7 + m3 + vec2(0u, u32(v3.x + v7.x < v3.x)) + vec2(0u, u32(v3.x + v7.x + m3.x < v3.x + v7.x));
+       v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
+       v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x));
        v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
        v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
@@ -707,7 +737,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=5, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
        */
-       v0 = v0 + v5 + m4 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m4.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m4 + vec2(0u, u32(v0.x + m4.x < v0.x));
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
@@ -743,7 +774,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=5, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
        */
-       v3 = v3 + v4 + m1 + vec2(0u, u32(v3.x + v4.x < v3.x)) + vec2(0u, u32(v3.x + v4.x + m1.x < v3.x + v4.x));
+       v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
+       v3 = v3 + m1 + vec2(0u, u32(v3.x + m1.x < v3.x));
        v14 = v14.yx ^ v3.yx;
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
@@ -775,7 +807,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=6, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
        */
-       v1 = v1 + v5 + m1 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m1.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m1 + vec2(0u, u32(v1.x + m1.x < v1.x));
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
@@ -799,7 +832,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=6, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
        */
-       v3 = v3 + v7 + m4 + vec2(0u, u32(v3.x + v7.x < v3.x)) + vec2(0u, u32(v3.x + v7.x + m4.x < v3.x + v7.x));
+       v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
+       v3 = v3 + m4 + vec2(0u, u32(v3.x + m4.x < v3.x));
        v15 = v15.yx ^ v3.yx;
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
        v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
@@ -811,7 +845,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=6, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
        */
-       v0 = v0 + v5 + m0 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m0.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x));
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
@@ -827,7 +862,8 @@ fn main(id: vec3<u32>) {
        v12 = v12.yx ^ v1.yx;
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
-       v1 = v1 + v6 + m3 + vec2(0u, u32(v1.x + v6.x < v1.x)) + vec2(0u, u32(v1.x + v6.x + m3.x < v1.x + v6.x));
+       v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
+       v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x));
        v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
@@ -839,7 +875,8 @@ fn main(id: vec3<u32>) {
        v13 = v13.yx ^ v2.yx;
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
-       v2 = v2 + v7 + m2 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m2.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m2 + vec2(0u, u32(v2.x + m2.x < v2.x));
        v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
@@ -895,7 +932,8 @@ fn main(id: vec3<u32>) {
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
-       v2 = v2 + v6 + m1 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x +v6.x +  m1.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m1 + vec2(0u, u32(v2.x + m1.x < v2.x));
        v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
@@ -903,7 +941,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=7, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
        */
-       v3 = v3 + v7 + m3 + vec2(0u, u32(v3.x + v7.x < v3.x)) + vec2(0u, u32(v3.x + v7.x + m3.x < v3.x + v7.x));
+       v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
+       v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x));
        v15 = v15.yx ^ v3.yx;
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
        v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
@@ -919,7 +958,8 @@ fn main(id: vec3<u32>) {
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
-       v0 = v0 + v5 + m0 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m0.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x));
        v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
@@ -931,7 +971,8 @@ fn main(id: vec3<u32>) {
        v12 = v12.yx ^ v1.yx;
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
-       v1 = v1 + v6 + m4 + vec2(0u, u32(v1.x + v6.x < v1.x)) + vec2(0u, u32(v1.x + v6.x + m4.x < v1.x + v6.x));
+       v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
+       v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x));
        v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
        v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
@@ -951,7 +992,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=7, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
        */
-       v3 = v3 + v4 + m2 + vec2(0u, u32(v3.x + v4.x < v3.x)) + vec2(0u, u32(v3.x + v4.x + m2.x < v3.x + v4.x));
+       v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
+       v3 = v3 + m2 + vec2(0u, u32(v3.x + m2.x < v3.x));
        v14 = v14.yx ^ v3.yx;
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
@@ -999,7 +1041,8 @@ fn main(id: vec3<u32>) {
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
-       v2 = v2 + v6 + m3 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m3.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m3 + vec2(0u, u32(v2.x + m3.x < v2.x));
        v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
@@ -1007,7 +1050,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=8, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
        */
-       v3 = v3 + v7 + m0 + vec2(0u, u32(v3.x + v7.x < v3.x)) + vec2(0u, u32(v3.x + v7.x + m0.x < v3.x + v7.x));
+       v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
+       v3 = v3 + m0 + vec2(0u, u32(v3.x + m0.x < v3.x));
        v15 = v15.yx ^ v3.yx;
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
        v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
@@ -1023,7 +1067,8 @@ fn main(id: vec3<u32>) {
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
-       v0 = v0 + v5 + m2 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m2.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x));
        v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
@@ -1043,11 +1088,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=8, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
        */
-       v2 = v2 + v7 + m1 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m1.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m1 + vec2(0u, u32(v2.x + m1.x < v2.x));
        v13 = v13.yx ^ v2.yx;
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
-       v2 = v2 + v7 + m4 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m4.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x));
        v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
@@ -1079,7 +1126,8 @@ fn main(id: vec3<u32>) {
        v12 = v12.yx ^ v0.yx;
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
-       v0 = v0 + v4 + m2 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m2.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x));
        v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
@@ -1091,7 +1139,8 @@ fn main(id: vec3<u32>) {
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
-       v1 = v1 + v5 + m4 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m4.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x));
        v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
@@ -1111,7 +1160,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=9, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
        */
-       v3 = v3 + v7 + m1 + vec2(0u, u32(v3.x + v7.x < v3.x)) + vec2(0u, u32(v3.x + v7.x + m1.x < v3.x + v7.x));
+       v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
+       v3 = v3 + m1 + vec2(0u, u32(v3.x + m1.x < v3.x));
        v15 = v15.yx ^ v3.yx;
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
        v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
@@ -1147,7 +1197,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=9, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
        */
-       v2 = v2 + v7 + m3 + vec2(0u, u32(v2.x + v7.x < v2.x)) + vec2(0u, u32(v2.x + v7.x + m3.x < v2.x + v7.x));
+       v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
+       v2 = v2 + m3 + vec2(0u, u32(v2.x + m3.x < v2.x));
        v13 = v13.yx ^ v2.yx;
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
        v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
@@ -1163,7 +1214,8 @@ fn main(id: vec3<u32>) {
        v14 = v14.yx ^ v3.yx;
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
-       v3 = v3 + v4 + m0 + vec2(0u, u32(v3.x + v4.x < v3.x)) + vec2(0u, u32(v3.x + v4.x + m0.x < v3.x + v4.x));
+       v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
+       v3 = v3 + m0 + vec2(0u, u32(v3.x + m0.x < v3.x));
        v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
        v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
@@ -1179,11 +1231,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=10, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
        */
-       v0 = v0 + v4 + m0 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m0.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x));
        v12 = v12.yx ^ v0.yx;
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
-       v0 = v0 + v4 + m1 + vec2(0u, u32(v0.x + v4.x < v0.x)) + vec2(0u, u32(v0.x + v4.x + m1.x < v0.x + v4.x));
+       v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
+       v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x));
        v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
        v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
@@ -1191,11 +1245,13 @@ fn main(id: vec3<u32>) {
        /**
        * r=10, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
        */
-       v1 = v1 + v5 + m2 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m2.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x));
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
-       v1 = v1 + v5 + m3 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m3.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x));
        v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
@@ -1203,7 +1259,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=10, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
        */
-       v2 = v2 + v6 + m4 + vec2(0u, u32(v2.x + v6.x < v2.x)) + vec2(0u, u32(v2.x + v6.x + m4.x < v2.x + v6.x));
+       v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
+       v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x));
        v14 = v14.yx ^ v2.yx;
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
        v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
@@ -1295,7 +1352,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=11, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
        */
-       v1 = v1 + v5 + m4 + vec2(0u, u32(v1.x + v5.x < v1.x)) + vec2(0u, u32(v1.x + v5.x + m4.x < v1.x + v5.x));
+       v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
+       v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x));
        v13 = v13.yx ^ v1.yx;
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
        v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
@@ -1331,7 +1389,8 @@ fn main(id: vec3<u32>) {
        /**
        * r=11, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
        */
-       v0 = v0 + v5 + m1 + vec2(0u, u32(v0.x + v5.x < v0.x)) + vec2(0u, u32(v0.x + v5.x + m1.x < v0.x + v5.x));
+       v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
+       v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x));
        v15 = v15.yx ^ v0.yx;
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
        v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);