From 5357f7c7f27a262654fe819c5527d6716097245d Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Thu, 16 Jan 2025 07:03:32 -0800 Subject: [PATCH] Write better documentation of G mixing algorithm and remove step-by-step comments to improve legibility and reduce scrolling. --- src/shaders/compute.wgsl | 2282 +------------------------------------- 1 file changed, 23 insertions(+), 2259 deletions(-) diff --git a/src/shaders/compute.wgsl b/src/shaders/compute.wgsl index d3298cc..f4efcea 100644 --- a/src/shaders/compute.wgsl +++ b/src/shaders/compute.wgsl @@ -108,7 +108,27 @@ fn main(id: vec3) { var v15: vec2 = vec2(0x137E2179u, 0x5BE0CD19u); /** - * Twelve rounds of G mixing as part of BLAKE2b compression step. + * Twelve rounds of G mixing as part of BLAKE2b compression step. Each round is + * divided into eight subprocesses. Each subprocesses applies transformations + * to `m` and `v` variables based on a defined set of index inputs. The + * algorithm for each subprocess is defined as follows: + * + * r is the current round + * i is the current subprocess within that round + * a, b, c, d are elements of `v` at specific indexes + * sigma is a defined set of array indexes for `m` + * rotr64 is a right-hand bit rotation function + * + * 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 + * a = a + m[sigma[r][2*i+1]] + * d = rotr64(d ^ a, 16) + * c = c + d + * b = rotr64(b ^ c, 63) */ /**************************************************************************** @@ -118,301 +138,113 @@ fn main(id: vec3) { /** * r=0, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x)); - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=0, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=0, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=0, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=0, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=0, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=0, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=0, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -426,301 +258,113 @@ fn main(id: vec3) { /** * r=1, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=1, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=1, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=1, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=1, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=1, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m0 + vec2(0u, u32(v1.x + m0.x < v1.x)); - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=1, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=1, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -734,301 +378,113 @@ fn main(id: vec3) { /** * r=2, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=2, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m0 + vec2(0u, u32(v1.x + m0.x < v1.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=2, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m2 + vec2(0u, u32(v2.x + m2.x < v2.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=2, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=2, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=2, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x)); - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=2, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m1 + vec2(0u, u32(v2.x + m1.x < v2.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=2, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] v3 = v3 + m4 + vec2(0u, u32(v3.x + m4.x < v3.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -1042,301 +498,113 @@ fn main(id: vec3) { /** * r=3, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=3, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m1 + vec2(0u, u32(v1.x + m1.x < v1.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=3, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=3, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=3, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=3, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=3, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m0 + vec2(0u, u32(v2.x + m0.x < v2.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=3, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -1350,301 +618,113 @@ fn main(id: vec3) { /** * r=4, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=4, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=4, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m2 + vec2(0u, u32(v2.x + m2.x < v2.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=4, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=4, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x)); - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=4, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=4, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=4, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -1658,301 +738,113 @@ fn main(id: vec3) { /** * r=5, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x)); - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=5, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=5, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m0 + vec2(0u, u32(v2.x + m0.x < v2.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=5, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x)); - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=5, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m4 + vec2(0u, u32(v0.x + m4.x < v0.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=5, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=5, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=5, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m1 + vec2(0u, u32(v3.x + m1.x < v3.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -1966,301 +858,113 @@ fn main(id: vec3) { /** * r=6, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=6, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m1 + vec2(0u, u32(v1.x + m1.x < v1.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=6, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=6, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m4 + vec2(0u, u32(v3.x + m4.x < v3.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=6, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=6, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=6, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m2 + vec2(0u, u32(v2.x + m2.x < v2.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=6, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -2274,301 +978,113 @@ fn main(id: vec3) { /** * r=7, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=7, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=7, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m1 + vec2(0u, u32(v2.x + m1.x < v2.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=7, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=7, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x)); - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=7, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=7, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=7, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m2 + vec2(0u, u32(v3.x + m2.x < v3.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -2582,301 +1098,113 @@ fn main(id: vec3) { /** * r=8, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=8, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=8, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m3 + vec2(0u, u32(v2.x + m3.x < v2.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=8, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m0 + vec2(0u, u32(v3.x + m0.x < v3.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=8, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x)); - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=8, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=8, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m1 + vec2(0u, u32(v2.x + m1.x < v2.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=8, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -2890,301 +1218,113 @@ fn main(id: vec3) { /** * r=9, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m2 + vec2(0u, u32(v0.x + m2.x < v0.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=9, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=9, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=9, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] v3 = v3 + m1 + vec2(0u, u32(v3.x + m1.x < v3.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=9, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d - v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) - v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - + v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); + v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); /** * r=9, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=9, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m3 + vec2(0u, u32(v2.x + m3.x < v2.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=9, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] v3 = v3 + m0 + vec2(0u, u32(v3.x + m0.x < v3.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -3198,301 +1338,113 @@ fn main(id: vec3) { /** * r=10, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m0 + vec2(0u, u32(v0.x + m0.x < v0.x)); - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=10, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m3 + vec2(0u, u32(v1.x + m3.x < v1.x)); - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=10, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] v2 = v2 + m4 + vec2(0u, u32(v2.x + m4.x < v2.x)); - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=10, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=10, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=10, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=10, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=10, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); @@ -3506,301 +1458,113 @@ fn main(id: vec3) { /** * r=11, i=0, a=v[0], b=v[4], c=v[8], d=v[12] */ - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v0.yx; - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8); - - // a = a + b v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16); - - // c = c + d v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31); - - - - /** * r=11, i=1, a=v[1], b=v[5], c=v[9], d=v[13] */ - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m4 + vec2(0u, u32(v1.x + m4.x < v1.x)); - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v1.yx; - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8); - - // a = a + b v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16); - - // c = c + d v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31); - - - - /** * r=11, i=2, a=v[2], b=v[6], c=v[10], d=v[14] */ - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v2.yx; - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8); - - // a = a + b v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16); - - // c = c + d v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31); - - - - /** * r=11, i=3, a=v[3], b=v[7], c=v[11], d=v[15] */ - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v3.yx; - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8); - - // a = a + b v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16); - - // c = c + d v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31); - - - - /** * r=11, i=4, a=v[0], b=v[5], c=v[10], d=v[15] */ - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+0]] v0 = v0 + m1 + vec2(0u, u32(v0.x + m1.x < v0.x)); - - // d = rotr64(d ^ a, 32) v15 = v15.yx ^ v0.yx; - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 24) v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8); - - // a = a + b v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16); - - // c = c + d v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x)); - - // b = rotr64(b ^ c, 63) v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31); - - - - /** * r=11, i=5, a=v[1], b=v[6], c=v[11], d=v[12] */ - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+0]] v1 = v1 + m0 + vec2(0u, u32(v1.x + m0.x < v1.x)); - - // d = rotr64(d ^ a, 32) v12 = v12.yx ^ v1.yx; - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 24) v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8); - - // a = a + b v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x)); - - // a = a + m[sigma[r][2*i+1]] v1 = v1 + m2 + vec2(0u, u32(v1.x + m2.x < v1.x)); - - // d = rotr64(d ^ a, 16) v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16); - - // c = c + d v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x)); - - // b = rotr64(b ^ c, 63) v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31); - - - - /** * r=11, i=6, a=v[2], b=v[7], c=v[8], d=v[13] */ - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v13 = v13.yx ^ v2.yx; - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 24) v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8); - - // a = a + b v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x)); - - // a = a + m[sigma[r][2*i+1]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 16) v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16); - - // c = c + d v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x)); - - // b = rotr64(b ^ c, 63) v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31); - - - - /** * r=11, i=7, a=v[3], b=v[4], c=v[9], d=v[14] */ - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+0]] // skip since adding 0u does nothing - - // d = rotr64(d ^ a, 32) v14 = v14.yx ^ v3.yx; - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 24) v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8); - - // a = a + b v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x)); - - // a = a + m[sigma[r][2*i+1]] v3 = v3 + m3 + vec2(0u, u32(v3.x + m3.x < v3.x)); - - // d = rotr64(d ^ a, 16) v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16); - - // c = c + d v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x)); - - // b = rotr64(b ^ c, 63) v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31); -- 2.34.1