* A random u32 provided by the UBO is copied to form a pair. Each component of
* this 8-byte value is then XOR'd with a different dimensional index from
* the thread identifier.
+*
+* Where the reference implementation uses array lookups, the NanoPow
+* implementation assigns each array element to its own variable to enhance
+* performance, but the variable name still contains the original index digit.
*/
fn main(id: vec3<u32>) {
if (atomicLoad(&work.found) != 0u) { return; }
/**
* Twelve rounds of G mixing as part of BLAKE2b compression step.
- *
- * Each sigma r index correlates with the reference implementation, but each
- * sigma i index is doubled due to using two u32 array elements to represent
- * one uint64_t.
*/
/****************************************************************************
****************************************************************************/
/**
- * r=0, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=0, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=0, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=0, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=0, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=0, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=0, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=0, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=0, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=0, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=0, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=0, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=0, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=0, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=0, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=0, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=1, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=1, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=1, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=1, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=1, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=1, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=1, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=1, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=1, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=1, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=1, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=1, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=1, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=1, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=1, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=1, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=2, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=2, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=2, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=2, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=2, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=2, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=2, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=2, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=2, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=2, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=2, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=2, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=2, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=2, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=2, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=2, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=3, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=3, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=3, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=3, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=3, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=3, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=3, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=3, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=3, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=3, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=3, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=3, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=3, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=3, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=3, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=3, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=4, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=4, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=4, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=4, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=4, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=4, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=4, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=4, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=4, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=4, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=4, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=4, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=4, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=4, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=4, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=4, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=5, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=5, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=5, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=5, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=5, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=5, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=5, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=5, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=5, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=5, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=5, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=5, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=5, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=5, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=5, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=5, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=6, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=6, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=6, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=6, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=6, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=6, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=6, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=6, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=6, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=6, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=6, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=6, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=6, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=6, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=6, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=6, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=7, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=7, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=7, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=7, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=7, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=7, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=7, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=7, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=7, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=7, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=7, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=7, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=7, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=7, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=7, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=7, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=8, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=8, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=8, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=8, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=8, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=8, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=8, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=8, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=8, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=8, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=8, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=8, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=8, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=8, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=8, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=8, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=9, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=9, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=9, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=9, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=9, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=9, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=9, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=9, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=9, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=9, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=9, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=9, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=9, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=9, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=9, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=9, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=10, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=10, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=10, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=10, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=10, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=10, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=10, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=10, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=10, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=10, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=10, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=10, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=10, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=10, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=10, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=10, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b
****************************************************************************/
/**
- * r=11, i=0(x2), a=v[0], b=v[4], c=v[8], d=v[12]
+ * r=11, i=0, a=v[0], b=v[4], c=v[8], d=v[12]
*/
// a = a + b
/**
- * r=11, i=1(x2), a=v[1], b=v[5], c=v[9], d=v[13]
+ * r=11, i=1, a=v[1], b=v[5], c=v[9], d=v[13]
*/
// a = a + b
/**
- * r=11, i=2(x2), a=v[2], b=v[6], c=v[10], d=v[14]
+ * r=11, i=2, a=v[2], b=v[6], c=v[10], d=v[14]
*/
// a = a + b
/**
- * r=11, i=3(x2), a=v[3], b=v[7], c=v[11], d=v[15]
+ * r=11, i=3, a=v[3], b=v[7], c=v[11], d=v[15]
*/
// a = a + b
/**
- * r=11, i=4(x2), a=v[0], b=v[5], c=v[10], d=v[15]
+ * r=11, i=4, a=v[0], b=v[5], c=v[10], d=v[15]
*/
// a = a + b
/**
- * r=11, i=5(x2), a=v[1], b=v[6], c=v[11], d=v[12]
+ * r=11, i=5, a=v[1], b=v[6], c=v[11], d=v[12]
*/
// a = a + b
/**
- * r=11, i=6(x2), a=v[2], b=v[7], c=v[8], d=v[13]
+ * r=11, i=6, a=v[2], b=v[7], c=v[8], d=v[13]
*/
// a = a + b
/**
- * r=11, i=7(x2), a=v[3], b=v[4], c=v[9], d=v[14]
+ * r=11, i=7, a=v[3], b=v[4], c=v[9], d=v[14]
*/
// a = a + b