Merge pull request #121 from Diapolo/master clean diakgcn kernel update
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
diff --git a/diakgcn120216.cl b/diakgcn120216.cl
index e96cee9..a5df195 100644
--- a/diakgcn120216.cl
+++ b/diakgcn120216.cl
@@ -1,4 +1,4 @@
-// DiaKGCN 16-02-2012 - OpenCL kernel by Diapolo
+// DiaKGCN 18-02-2012 - OpenCL kernel by Diapolo
//
// Parts and / or ideas for this kernel are based upon the public-domain poclbm project, the phatk kernel by Phateus and the DiabloMiner kernel by DiabloD3.
// The kernel was rewritten by me (Diapolo) and is still public-domain!
@@ -88,19 +88,25 @@ __kernel
#endif
V[0] = PreVal0 + nonce;
+ V[1] = B1;
+ V[2] = C1;
+ V[3] = D1A;
V[4] = PreVal4 + nonce;
+ V[5] = F1;
+ V[6] = G1;
+ V[7] = H1;
- V[7] = H1 + (V[3] = D1A + ch(V[0], B1, C1) + rotr26(V[0]));
- V[3] += rotr30(V[4]) + ma(F1, G1, V[4]);
+ V[7] += V[3] + ch(V[0], V[1], V[2]) + rotr26(V[0]);
+ V[3] = V[3] + ch(V[0], V[1], V[2]) + rotr26(V[0]) + rotr30(V[4]) + ma(V[5], V[6], V[4]);
- V[6] = G1 + (V[2] = C1addK5 + ch(V[7], V[0], B1) + rotr26(V[7]));
- V[2] += rotr30(V[3]) + ma(V[4], F1, V[3]);
+ V[6] += C1addK5 + ch(V[7], V[0], V[1]) + rotr26(V[7]);
+ V[2] = C1addK5 + ch(V[7], V[0], V[1]) + rotr26(V[7]) + rotr30(V[3]) + ma(V[4], V[5], V[3]);
- V[5] = F1 + (V[1] = B1addK6 + ch(V[6], V[7], V[0]) + rotr26(V[6]));
- V[1] += rotr30(V[2]) + ma(V[3], V[4], V[2]);
+ V[5] += B1addK6 + ch(V[6], V[7], V[0]) + rotr26(V[6]);
+ V[1] = B1addK6 + ch(V[6], V[7], V[0]) + rotr26(V[6]) + rotr30(V[2]) + ma(V[3], V[4], V[2]);
- V[4] = V[4] + (V[0] = PreVal0addK7 + nonce + ch(V[5], V[6], V[7]) + rotr26(V[5]));
- V[0] += rotr30(V[1]) + ma(V[2], V[3], V[1]);
+ V[4] += PreVal0addK7 + nonce + ch(V[5], V[6], V[7]) + rotr26(V[5]);
+ V[0] = PreVal0addK7 + nonce + ch(V[5], V[6], V[7]) + rotr26(V[5]) + rotr30(V[1]) + ma(V[2], V[3], V[1]);
V[3] += 0xd807aa98 + V[7] + ch(V[4], V[5], V[6]) + rotr26(V[4]);
V[7] = 0xd807aa98 + V[7] + ch(V[4], V[5], V[6]) + rotr26(V[4]) + rotr30(V[0]) + ma(V[1], V[2], V[0]);
@@ -345,46 +351,52 @@ __kernel
W[6] = state6 + V[6];
W[7] = state7 + V[7];
- // 0x98c7e2a2 + W[0]
- const u state0AaddV0 = state0A + V[0];
- // 0xfc08884d + W[0]
- const u state0BaddV0 = state0B + V[0];
-
- // 0x90bb1e3c + W[1]
+ // 0x71374491 + 0x1f83d9ab + state1
const u state1AaddV1 = state1A + V[1];
- // 0x50c6645b + W[2]
+ // 0xb5c0fbcf + 0x9b05688c + state2
const u state2AaddV2 = state2A + V[2];
- // 0x3ac42e24 + W[3]
+ // 0x510e527f + 0xe9b5dba5 + state3
const u state3AaddV3 = state3A + V[3];
- // 0x3956c25b + W[4]
+ // 0x3956c25b + state4
const u state4AaddV4 = state4A + V[4];
- // 0x59f111f1 + W[5]
+ // 0x59f111f1 + state5
const u state5AaddV5 = state5A + V[5];
- // 0x923f82a4 + W[6]
+ // 0x923f82a4 + state6
const u state6AaddV6 = state6A + V[6];
- // 0xab1c5ed5 + W[7]
+ // 0xab1c5ed5 + state7
const u state7AaddV7 = state7A + V[7];
-
- V[2] = 0x3c6ef372 + (V[6] = state1AaddV1 + ch(state0AaddV0, 0x510e527fU, 0x9b05688cU) + rotr26(state0AaddV0));
- V[6] += rotr30(state0BaddV0) + ma(0x6a09e667U, 0xbb67ae85U, state0BaddV0);
-
- V[1] = 0xbb67ae85 + (V[5] = state2AaddV2 + ch(V[2], state0AaddV0, 0x510e527fU) + rotr26(V[2]));
- V[5] += rotr30(V[6]) + ma(state0BaddV0, 0x6a09e667U, V[6]);
- V[0] = 0x6a09e667 + (V[4] = state3AaddV3 + ch(V[1], V[2], state0AaddV0) + rotr26(V[1]));
- V[4] += rotr30(V[5]) + ma(V[6], state0BaddV0, V[5]);
+ // 0x98c7e2a2 + state0
+ V[3] = state0A + V[0];
+ // 0xfc08884d + state0
+ V[7] = state0B + V[0];
+ V[0] = 0x6a09e667;
+ V[1] = 0xbb67ae85;
+ V[2] = 0x3c6ef372;
+ V[4] = 0x510e527f;
+ V[5] = 0x9b05688c;
+ V[6] = 0x1f83d9ab;
+
+ V[2] += state1AaddV1 + ch(V[3], V[4], V[5]) + rotr26(V[3]);
+ V[6] = state1AaddV1 + ch(V[3], V[4], V[5]) + rotr26(V[3]) + rotr30(V[7]) + ma(V[0], V[1], V[7]);
+
+ V[1] += state2AaddV2 + ch(V[2], V[3], V[4]) + rotr26(V[2]);
+ V[5] = state2AaddV2 + ch(V[2], V[3], V[4]) + rotr26(V[2]) + rotr30(V[6]) + ma(V[7], V[0], V[6]);
+
+ V[0] += state3AaddV3 + ch(V[1], V[2], V[3]) + rotr26(V[1]);
+ V[4] = state3AaddV3 + ch(V[1], V[2], V[3]) + rotr26(V[1]) + rotr30(V[5]) + ma(V[6], V[7], V[5]);
- V[7] = state0BaddV0 + (V[3] = state4AaddV4 + state0AaddV0 + ch(V[0], V[1], V[2]) + rotr26(V[0]));
- V[3] += rotr30(V[4]) + ma(V[5], V[6], V[4]);
+ V[7] += state4AaddV4 + V[3] + ch(V[0], V[1], V[2]) + rotr26(V[0]);
+ V[3] = state4AaddV4 + V[3] + ch(V[0], V[1], V[2]) + rotr26(V[0]) + rotr30(V[4]) + ma(V[5], V[6], V[4]);
- V[6] += (V[2] += state5AaddV5 + ch(V[7], V[0], V[1]) + rotr26(V[7]));
- V[2] += rotr30(V[3]) + ma(V[4], V[5], V[3]);
+ V[6] += state5AaddV5 + V[2] + ch(V[7], V[0], V[1]) + rotr26(V[7]);
+ V[2] = state5AaddV5 + V[2] + ch(V[7], V[0], V[1]) + rotr26(V[7]) + rotr30(V[3]) + ma(V[4], V[5], V[3]);
- V[5] += (V[1] += state6AaddV6 + ch(V[6], V[7], V[0]) + rotr26(V[6]));
- V[1] += rotr30(V[2]) + ma(V[3], V[4], V[2]);
+ V[5] += state6AaddV6 + V[1] + ch(V[6], V[7], V[0]) + rotr26(V[6]);
+ V[1] = state6AaddV6 + V[1] + ch(V[6], V[7], V[0]) + rotr26(V[6]) + rotr30(V[2]) + ma(V[3], V[4], V[2]);
- V[4] += (V[0] += state7AaddV7 + ch(V[5], V[6], V[7]) + rotr26(V[5]));
- V[0] += rotr30(V[1]) + ma(V[2], V[3], V[1]);
+ V[4] += state7AaddV7 + V[0] + ch(V[5], V[6], V[7]) + rotr26(V[5]);
+ V[0] = state7AaddV7 + V[0] + ch(V[5], V[6], V[7]) + rotr26(V[5]) + rotr30(V[1]) + ma(V[2], V[3], V[1]);
V[3] += 0x5807aa98 + V[7] + ch(V[4], V[5], V[6]) + rotr26(V[4]);
V[7] = 0x5807aa98 + V[7] + ch(V[4], V[5], V[6]) + rotr26(V[4]) + rotr30(V[0]) + ma(V[1], V[2], V[0]);