* 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]]
+ * a = a + b + 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]]
+ * a = a + b + m[sigma[r][2*i+1]]
* d = rotr64(d ^ a, 16)
* c = c + d
* b = rotr64(b ^ c, 63)
+ *
+ * Each sum step has an extra carry addition. Note that the `a` assignment sum
+ * has zero, one, or two carry additions depending on whether m[sigma] is zero.
*/
/****************************************************************************
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
* r=0, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=0, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=0, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=0, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
* r=0, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=1, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
* r=1, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
* r=1, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=1, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
* r=1, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
* r=2, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
* r=2, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v1.yx;
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
* r=2, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
* r=2, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=2, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=2, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
* r=2, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
* r=3, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
* r=3, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
* r=3, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=3, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=3, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=4, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
* r=4, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v1.yx;
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
* r=4, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=4, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
* r=4, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=4, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
* r=5, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v1.yx;
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
* r=5, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=5, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=5, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=6, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
* r=6, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=6, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
* r=6, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
* r=6, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=7, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
* r=7, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v1.yx;
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
* r=7, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=7, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
* r=7, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
* r=7, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=8, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy << ROTATE_1) | ((v4 ^ v8).yx >> ROTATE_31);
* r=8, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v1.yx;
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
* r=8, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=8, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
* r=8, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=8, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=9, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
* r=9, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v1.yx;
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
* r=9, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=9, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=9, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
* r=9, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy << ROTATE_1) | ((v6 ^ v10).yx >> ROTATE_31);
* r=10, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
* r=10, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v0.yx;
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v0).xy >> ROTATE_16) | ((v15 ^ v0).yx << ROTATE_16);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy << ROTATE_1) | ((v5 ^ v10).yx >> ROTATE_31);
* r=10, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v1.yx;
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy >> ROTATE_24) | ((v6 ^ v11).yx << ROTATE_8);
v1 = v1 + v6 + vec2(0u, u32(v1.x + v6.x < v1.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v1).xy >> ROTATE_16) | ((v12 ^ v1).yx << ROTATE_16);
v11 = v11 + v12 + vec2(0u, u32(v11.x + v12.x < v11.x));
v6 = ((v6 ^ v11).xy << ROTATE_1) | ((v6 ^ v11).yx >> ROTATE_31);
* r=10, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy << ROTATE_1) | ((v7 ^ v8).yx >> ROTATE_31);
* r=10, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v3.yx;
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy >> ROTATE_24) | ((v4 ^ v9).yx << ROTATE_8);
v3 = v3 + v4 + vec2(0u, u32(v3.x + v4.x < v3.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v3).xy >> ROTATE_16) | ((v14 ^ v3).yx << ROTATE_16);
v9 = v9 + v14 + vec2(0u, u32(v9.x + v14.x < v9.x));
v4 = ((v4 ^ v9).xy << ROTATE_1) | ((v4 ^ v9).yx >> ROTATE_31);
* r=11, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = v12.yx ^ v0.yx;
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
v4 = ((v4 ^ v8).xy >> ROTATE_24) | ((v4 ^ v8).yx << ROTATE_8);
v0 = v0 + v4 + vec2(0u, u32(v0.x + v4.x < v0.x));
- // skip since adding 0u does nothing
v12 = ((v12 ^ v0).xy >> ROTATE_16) | ((v12 ^ v0).yx << ROTATE_16);
v8 = v8 + v12 + vec2(0u, u32(v8.x + v12.x < v8.x));
// skip since it does not affect the final values of `v0` and `v8`
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy >> ROTATE_24) | ((v5 ^ v9).yx << ROTATE_8);
v1 = v1 + v5 + vec2(0u, u32(v1.x + v5.x < v1.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v1).xy >> ROTATE_16) | ((v13 ^ v1).yx << ROTATE_16);
v9 = v9 + v13 + vec2(0u, u32(v9.x + v13.x < v9.x));
v5 = ((v5 ^ v9).xy << ROTATE_1) | ((v5 ^ v9).yx >> ROTATE_31);
* r=11, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = v14.yx ^ v2.yx;
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
v6 = ((v6 ^ v10).xy >> ROTATE_24) | ((v6 ^ v10).yx << ROTATE_8);
v2 = v2 + v6 + vec2(0u, u32(v2.x + v6.x < v2.x));
- // skip since adding 0u does nothing
v14 = ((v14 ^ v2).xy >> ROTATE_16) | ((v14 ^ v2).yx << ROTATE_16);
v10 = v10 + v14 + vec2(0u, u32(v10.x + v14.x < v10.x));
// skip since it does not affect the final values of `v0` and `v8`
* r=11, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = v15.yx ^ v3.yx;
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy >> ROTATE_24) | ((v7 ^ v11).yx << ROTATE_8);
v3 = v3 + v7 + vec2(0u, u32(v3.x + v7.x < v3.x));
- // skip since adding 0u does nothing
v15 = ((v15 ^ v3).xy >> ROTATE_16) | ((v15 ^ v3).yx << ROTATE_16);
v11 = v11 + v15 + vec2(0u, u32(v11.x + v15.x < v11.x));
v7 = ((v7 ^ v11).xy << ROTATE_1) | ((v7 ^ v11).yx >> ROTATE_31);
v10 = v10 + v15 + vec2(0u, u32(v10.x + v15.x < v10.x));
v5 = ((v5 ^ v10).xy >> ROTATE_24) | ((v5 ^ v10).yx << ROTATE_8);
v0 = v0 + v5 + vec2(0u, u32(v0.x + v5.x < v0.x));
- // skip since adding 0u does nothing
// skip since it does not affect the final values of `v0` and `v8`
// skip since it does not affect the final values of `v0` and `v8`
// skip since it does not affect the final values of `v0` and `v8`
* r=11, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = v13.yx ^ v2.yx;
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
v7 = ((v7 ^ v8).xy >> ROTATE_24) | ((v7 ^ v8).yx << ROTATE_8);
v2 = v2 + v7 + vec2(0u, u32(v2.x + v7.x < v2.x));
- // skip since adding 0u does nothing
v13 = ((v13 ^ v2).xy >> ROTATE_16) | ((v13 ^ v2).yx << ROTATE_16);
v8 = v8 + v13 + vec2(0u, u32(v8.x + v13.x < v8.x));
// skip since we already have the final values of `v0` and `v8`