]> zoso.dev Git - nano-pow.git/commitdiff
Replace all 32-bit rotations with swizzle. Start working on other rotations.
authorChris Duncan <chris@zoso.dev>
Thu, 16 Jan 2025 13:28:54 +0000 (05:28 -0800)
committerChris Duncan <chris@zoso.dev>
Thu, 16 Jan 2025 13:28:54 +0000 (05:28 -0800)
src/shaders/compute.wgsl

index fc41959402c4513662fb5b55d63c4b54bc5d854f..ccf89795b225bb4f7b4ceb31b9c5103bbc1699d4 100644 (file)
@@ -126,7 +126,6 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       // v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
        v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
@@ -137,14 +136,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -162,7 +161,8 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       // v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -204,7 +204,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -246,7 +246,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -288,7 +288,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -330,7 +330,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -347,7 +347,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -372,7 +372,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -414,14 +414,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -438,7 +438,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -460,14 +460,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -477,14 +477,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -502,7 +502,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -544,7 +544,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -586,7 +586,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -628,7 +628,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -670,7 +670,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -687,7 +687,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -712,7 +712,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -754,14 +754,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -778,7 +778,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -800,14 +800,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -817,14 +817,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -842,7 +842,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -884,7 +884,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -926,7 +926,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -968,7 +968,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -1010,7 +1010,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -1027,7 +1027,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -1052,7 +1052,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -1094,14 +1094,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -1118,7 +1118,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -1140,14 +1140,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -1157,14 +1157,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -1182,7 +1182,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -1224,7 +1224,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -1266,7 +1266,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -1308,7 +1308,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -1350,7 +1350,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -1367,7 +1367,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -1392,7 +1392,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -1434,14 +1434,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -1458,7 +1458,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -1480,14 +1480,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -1497,14 +1497,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -1522,7 +1522,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -1564,7 +1564,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -1606,7 +1606,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -1648,7 +1648,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -1690,7 +1690,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -1707,7 +1707,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -1732,7 +1732,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -1774,14 +1774,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -1798,7 +1798,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -1820,14 +1820,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -1837,14 +1837,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -1862,7 +1862,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -1904,7 +1904,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -1946,7 +1946,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -1988,7 +1988,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -2030,7 +2030,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -2047,7 +2047,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -2072,7 +2072,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -2114,14 +2114,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -2138,7 +2138,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -2160,14 +2160,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -2177,14 +2177,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -2202,7 +2202,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -2244,7 +2244,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -2286,7 +2286,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -2328,7 +2328,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -2370,7 +2370,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -2387,7 +2387,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -2412,7 +2412,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -2454,14 +2454,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -2478,7 +2478,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -2500,14 +2500,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -2517,14 +2517,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -2542,7 +2542,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -2584,7 +2584,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -2626,7 +2626,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -2668,7 +2668,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -2710,7 +2710,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -2727,7 +2727,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -2752,7 +2752,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -2794,14 +2794,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -2818,7 +2818,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -2840,14 +2840,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -2857,14 +2857,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -2882,7 +2882,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -2924,7 +2924,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -2966,7 +2966,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -3008,7 +3008,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -3050,7 +3050,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -3067,7 +3067,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -3092,7 +3092,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -3134,14 +3134,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -3158,7 +3158,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -3180,14 +3180,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -3197,14 +3197,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -3222,7 +3222,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -3264,7 +3264,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -3306,7 +3306,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -3348,7 +3348,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -3390,7 +3390,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -3407,7 +3407,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -3432,7 +3432,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -3474,14 +3474,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -3498,7 +3498,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -3520,14 +3520,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -3537,14 +3537,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -3562,7 +3562,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -3604,7 +3604,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -3646,7 +3646,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -3688,7 +3688,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -3730,7 +3730,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -3747,7 +3747,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -3772,7 +3772,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -3814,14 +3814,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -3838,7 +3838,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -3860,14 +3860,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v0;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
@@ -3877,14 +3877,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v0;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v8;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));
 
 
 
@@ -3902,7 +3902,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v1;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
@@ -3944,7 +3944,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v2;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
@@ -3986,7 +3986,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v3;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
@@ -4028,7 +4028,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v15 ^ v0;
-       v15 = vec2(xor.y, xor.x);
+       v15 = xor.yx;
 
        // c = c + d
        v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
@@ -4070,7 +4070,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v12 ^ v1;
-       v12 = vec2(xor.y, xor.x);
+       v12 = xor.yx;
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -4087,7 +4087,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 16)
        xor = v12 ^ v1;
-       v12 = vec2((xor.x >> 16u) | (xor.y << 16u), (xor.y >> 16u) | (xor.x << 16u));
+       v12 = vec2((xor.xy >> vec2(16u, 16u)) | (xor.yx << vec2(16u, 16u)));
 
        // c = c + d
        v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
@@ -4112,7 +4112,7 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v13 ^ v2;
-       v13 = vec2(xor.y, xor.x);
+       v13 = xor.yx;
 
        // c = c + d
        v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
@@ -4154,14 +4154,14 @@ fn main(id: vec3<u32>) {
 
        // d = rotr64(d ^ a, 32)
        xor = v14 ^ v3;
-       v14 = vec2(xor.y, xor.x);
+       v14 = xor.yx;
 
        // c = c + d
        v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
 
        // b = rotr64(b ^ c, 24)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v4 = vec2((xor.xy >> vec2(24u, 24u)) | (xor.yx << vec2(8u, 8u)));
 
        // a = a + b
        v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
@@ -4178,7 +4178,7 @@ fn main(id: vec3<u32>) {
 
        // b = rotr64(b ^ c, 63)
        xor = v4 ^ v9;
-       v4 = vec2((xor.x << 1u) | (xor.y >> 31u), (xor.y << 1u) | (xor.x >> 31u));
+       v4 = vec2((xor.xy << vec2(1u, 1u)) | (xor.yx >> vec2(31u, 31u)));