* due to the lack of both a native rotate function and 64-bit support in WGSL.
*/
- /****************************************************************************
- * ROUND(0) *
- ****************************************************************************/
-
/**
- * r=0, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=0, m[sigma+1]=1
- * r=0, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=2, m[sigma+1]=3
- * r=0, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=4, m[sigma+1]=5
- * r=0, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=6, m[sigma+1]=7
+ * ROUND(0)
+ * m[sigma]=(0,1),(2,3),(4,5),(6,7)
+ * m[sigma]=(8,9),(10,11),(12,13),(14,15)
*/
G(&v0, &v4, &v8, &vC, m0, m1);
G(&v1, &v5, &v9, &vD, m2, m3);
G(&v2, &v6, &vA, &vE, m4, Z);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- * r=0, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=8, m[sigma+1]=9
- * r=0, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=10, m[sigma+1]=11
- * r=0, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=12, m[sigma+1]=13
- * r=0, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=14, m[sigma+1]=15
- */
G(&v0, &v5, &vA, &vF, Z, Z);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, Z, Z);
G(&v3, &v4, &v9, &vE, Z, Z);
- /****************************************************************************
- * ROUND(1) *
- ****************************************************************************/
-
/**
- * r=1, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=14, m[sigma+1]=10
- * r=1, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=4, m[sigma+1]=8
- * r=1, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=9, m[sigma+1]=15
- * r=1, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=13, m[sigma+1]=6
+ * ROUND(1)
+ * m[sigma]=(14,10),(4,8),(9,15),(13,6)
+ * m[sigma]=(1,12),(0,2),(11,7),(5,3)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, m4, Z);
G(&v2, &v6, &vA, &vE, Z, Z);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- * r=1, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=1, m[sigma+1]=12
- * r=1, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=0, m[sigma+1]=2
- * r=1, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=11, m[sigma+1]=7
- * r=1, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=5, m[sigma+1]=3
- */
G(&v0, &v5, &vA, &vF, m1, Z);
G(&v1, &v6, &vB, &vC, m0, m2);
G(&v2, &v7, &v8, &vD, Z, Z);
G(&v3, &v4, &v9, &vE, Z, m3);
- /****************************************************************************
- * ROUND(2) *
- ****************************************************************************/
-
/**
- * r=2, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=11, m[sigma+1]=8
- * r=2, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=12, m[sigma+1]=0
- * r=2, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=5, m[sigma+1]=2
- * r=2, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=15, m[sigma+1]=13
+ * ROUND(2)
+ * m[sigma]=(11,8),(12,0),(5,2),(15,13)
+ * m[sigma]=(10,14),(3,6),(7,1),(9,4)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, Z, m0);
G(&v2, &v6, &vA, &vE, Z, m2);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- * r=2, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=10, m[sigma+1]=14
- * r=2, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=3, m[sigma+1]=6
- * r=2, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=7, m[sigma+1]=1
- * r=2, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=9, m[sigma+1]=4
- */
G(&v0, &v5, &vA, &vF, Z, Z);
G(&v1, &v6, &vB, &vC, m3, Z);
G(&v2, &v7, &v8, &vD, Z, m1);
G(&v3, &v4, &v9, &vE, Z, m4);
- /****************************************************************************
- * ROUND(3) *
- ****************************************************************************/
-
/**
- * r=3, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=7, m[sigma+1]=9
- * r=3, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=3, m[sigma+1]=1
- * r=3, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=13, m[sigma+1]=12
- * r=3, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=11, m[sigma+1]=14
+ * ROUND(3)
+ * m[sigma]=(7,9),(3,1),(13,12),(11,14)
+ * m[sigma]=(2,6),(5,10),(4,0),(15,8)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, m3, m1);
G(&v2, &v6, &vA, &vE, Z, Z);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- * r=3, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=2, m[sigma+1]=6
- * r=3, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=5, m[sigma+1]=10
- * r=3, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=4, m[sigma+1]=0
- * r=3, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=15, m[sigma+1]=8
- */
G(&v0, &v5, &vA, &vF, m2, Z);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, m4, m0);
G(&v3, &v4, &v9, &vE, Z, Z);
- /****************************************************************************
- * ROUND(4) *
- ****************************************************************************/
-
/**
- * r=4, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=9, m[sigma+1]=0
- * r=4, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=5, m[sigma+1]=7
- * r=4, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=2, m[sigma+1]=4
- * r=4, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=10, m[sigma+1]=15
+ * ROUND(4)
+ * m[sigma]=(9,0),(5,7),(2,4),(10,15)
+ * m[sigma]=(14,1),(11,12),(6,8),(3,13)
*/
G(&v0, &v4, &v8, &vC, Z, m0);
G(&v1, &v5, &v9, &vD, Z, Z);
G(&v2, &v6, &vA, &vE, m2, m4);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- */
-
- /**
- * r=4, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=14, m[sigma+1]=1
- * r=4, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=11, m[sigma+1]=12
- * r=4, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=6, m[sigma+1]=8
- * r=4, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=3, m[sigma+1]=13
- */
G(&v0, &v5, &vA, &vF, Z, m1);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, Z, Z);
G(&v3, &v4, &v9, &vE, m3, Z);
- /****************************************************************************
- * ROUND(5) *
- ****************************************************************************/
-
/**
- * r=5, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=2, m[sigma+1]=12
- * r=5, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=6, m[sigma+1]=10
- * r=5, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=0, m[sigma+1]=11
- * r=5, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=8, m[sigma+1]=3
+ * ROUND(5)
+ * m[sigma]=(2,12),(6,10),(0,11),(8,3)
+ * m[sigma]=(4,13),(7,5),(15,14),(1,9)
*/
G(&v0, &v4, &v8, &vC, m2, Z);
G(&v1, &v5, &v9, &vD, Z, Z);
G(&v2, &v6, &vA, &vE, m0, Z);
G(&v3, &v7, &vB, &vF, Z, m3);
- /**
- * r=5, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=4, m[sigma+1]=13
- * r=5, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=7, m[sigma+1]=5
- * r=5, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=15, m[sigma+1]=14
- * r=5, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=1, m[sigma+1]=9
- */
G(&v0, &v5, &vA, &vF, m4, Z);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, Z, Z);
G(&v3, &v4, &v9, &vE, m1, Z);
- /****************************************************************************
- * ROUND(6) *
- ****************************************************************************/
-
/**
- * r=6, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=12, m[sigma+1]=5
- * r=6, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=1, m[sigma+1]=15
- * r=6, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=14, m[sigma+1]=13
- * r=6, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=4, m[sigma+1]=10
+ * ROUND(6)
+ * m[sigma]=(12,5),(1,15),(14,13),(4,10)
+ * m[sigma]=(0,7),(6,3),(9,2),(8,11)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, m1, Z);
G(&v2, &v6, &vA, &vE, Z, Z);
G(&v3, &v7, &vB, &vF, m4, Z);
- /**
- * r=6, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=0, m[sigma+1]=7
- * r=6, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=6, m[sigma+1]=3
- * r=6, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=9, m[sigma+1]=2
- * r=6, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=8, m[sigma+1]=11
- */
G(&v0, &v5, &vA, &vF, m0, Z);
G(&v1, &v6, &vB, &vC, Z, m3);
G(&v2, &v7, &v8, &vD, Z, m2);
G(&v3, &v4, &v9, &vE, Z, Z);
- /****************************************************************************
- * ROUND(7) *
- ****************************************************************************/
-
/**
- * r=7, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=13, m[sigma+1]=11
- * r=7, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=7, m[sigma+1]=14
- * r=7, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=12, m[sigma+1]=1
- * r=7, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=3, m[sigma+1]=9
+ * ROUND(7)
+ * m[sigma]=(13,11),(7,14),(12,1),(3,9)
+ * m[sigma]=(5,0),(15,4),(8,6),(2,10)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, Z, Z);
G(&v2, &v6, &vA, &vE, Z, m1);
G(&v3, &v7, &vB, &vF, m3, Z);
- /**
- * r=7, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=5, m[sigma+1]=0
- * r=7, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=15, m[sigma+1]=4
- * r=7, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=8, m[sigma+1]=6
- * r=7, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=2, m[sigma+1]=10
- */
G(&v0, &v5, &vA, &vF, Z, m0);
G(&v1, &v6, &vB, &vC, Z, m4);
G(&v2, &v7, &v8, &vD, Z, Z);
G(&v3, &v4, &v9, &vE, m2, Z);
- /****************************************************************************
- * ROUND(8) *
- ****************************************************************************/
-
/**
- * r=8, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=6, m[sigma+1]=15
- * r=8, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=14, m[sigma+1]=9
- * r=8, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=11, m[sigma+1]=3
- * r=8, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=0, m[sigma+1]=8
+ * ROUND(8)
+ * m[sigma]=(6,15),(14,9),(11,3),(0,8)
+ * m[sigma]=(12,2),(13,7),(1,4),(10,5)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, Z, Z);
G(&v2, &v6, &vA, &vE, Z, m3);
G(&v3, &v7, &vB, &vF, m0, Z);
- /**
- * r=8, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=12, m[sigma+1]=2
- * r=8, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=13, m[sigma+1]=7
- * r=8, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=1, m[sigma+1]=4
- * r=8, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=10, m[sigma+1]=5
- */
G(&v0, &v5, &vA, &vF, Z, m2);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, m1, m4);
G(&v3, &v4, &v9, &vE, Z, Z);
- /****************************************************************************
- * ROUND(9) *
- ****************************************************************************/
-
/**
- * r=9, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=10, m[sigma+1]=2
- * r=9, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=8, m[sigma+1]=4
- * r=9, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=7, m[sigma+1]=6
- * r=9, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=1, m[sigma+1]=5
+ * ROUND(9)
+ * m[sigma]=(10,2),(8,4),(7,6),(1,5)
+ * m[sigma]=(15,11),(9,14),(3,12),(13,0)
*/
G(&v0, &v4, &v8, &vC, Z, m2);
G(&v1, &v5, &v9, &vD, Z, m4);
G(&v2, &v6, &vA, &vE, Z, Z);
G(&v3, &v7, &vB, &vF, m1, Z);
- /**
- * r=9, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=15, m[sigma+1]=11
- * r=9, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=9, m[sigma+1]=14
- * r=9, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=3, m[sigma+1]=12
- * r=9, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=13, m[sigma+1]=0
- */
G(&v0, &v5, &vA, &vF, Z, Z);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, m3, Z);
G(&v3, &v4, &v9, &vE, Z, m0);
- /****************************************************************************
- * ROUND(10) *
- ****************************************************************************/
-
/**
- * r=10, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=0, m[sigma+1]=1
- * r=10, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=2, m[sigma+1]=3
- * r=10, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=4, m[sigma+1]=5
- * r=10, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=6, m[sigma+1]=7
+ * ROUND(10)
+ * m[sigma]=(0,1),(2,3),(4,5),(6,7)
+ * m[sigma]=(8,9),(10,11),(12,13),(14,15)
*/
G(&v0, &v4, &v8, &vC, m0, m1);
G(&v1, &v5, &v9, &vD, m2, m3);
G(&v2, &v6, &vA, &vE, m4, Z);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- * r=10, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=8, m[sigma+1]=9
- * r=10, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=10, m[sigma+1]=11
- * r=10, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=12, m[sigma+1]=13
- * r=10, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=14, m[sigma+1]=15
- */
G(&v0, &v5, &vA, &vF, Z, Z);
G(&v1, &v6, &vB, &vC, Z, Z);
G(&v2, &v7, &v8, &vD, Z, Z);
G(&v3, &v4, &v9, &vE, Z, Z);
- /****************************************************************************
- * ROUND(11) *
- ****************************************************************************/
-
/**
- * r=11, i=0, a=v[0], b=v[4], c=v[8], d=v[12], m[sigma]=14, m[sigma+1]=10
- * r=11, i=1, a=v[1], b=v[5], c=v[9], d=v[13], m[sigma]=4, m[sigma+1]=8
- * r=11, i=2, a=v[2], b=v[6], c=v[10], d=v[14], m[sigma]=9, m[sigma+1]=15
- * r=11, i=3, a=v[3], b=v[7], c=v[11], d=v[15], m[sigma]=13, m[sigma+1]=6
+ * ROUND(11)
+ * m[sigma]=(14,10),(4,8),(9,15),(13,6)
+ * m[sigma]=(1,12),(0,2),(11,7),(5,3)
*/
G(&v0, &v4, &v8, &vC, Z, Z);
G(&v1, &v5, &v9, &vD, m4, Z);
G(&v2, &v6, &vA, &vE, Z, Z);
G(&v3, &v7, &vB, &vF, Z, Z);
- /**
- * r=11, i=4, a=v[0], b=v[5], c=v[10], d=v[15], m[sigma]=1, m[sigma+1]=12
- * r=11, i=5, a=v[1], b=v[6], c=v[11], d=v[12], m[sigma]=0, m[sigma+1]=2
- * r=11, i=6, a=v[2], b=v[7], c=v[8], d=v[13], m[sigma]=11, m[sigma+1]=7
- * r=11, i=7, a=v[3], b=v[4], c=v[9], d=v[14], m[sigma]=5, m[sigma+1]=3
- */
G(&v0, &v5, &vA, &vF, m1, Z);
// G(&v1, &v6, &vB, &vC, m0, m2);
G(&v2, &v7, &v8, &vD, Z, Z);