From f80eb1ee139947215f83fd9a6aedd23d8272a5eb Mon Sep 17 00:00:00 2001 From: philsmd Date: Sat, 4 Jun 2022 11:51:35 +0200 Subject: [PATCH] radmin3: fix private/local type problem --- OpenCL/m29200_a0-pure.cl | 208 +++++++++++++++++++++++++++------------ OpenCL/m29200_a1-pure.cl | 208 +++++++++++++++++++++++++++------------ OpenCL/m29200_a3-pure.cl | 208 +++++++++++++++++++++++++++------------ 3 files changed, 432 insertions(+), 192 deletions(-) diff --git a/OpenCL/m29200_a0-pure.cl b/OpenCL/m29200_a0-pure.cl index 61a616d50..1ebc075b2 100644 --- a/OpenCL/m29200_a0-pure.cl +++ b/OpenCL/m29200_a0-pure.cl @@ -38,29 +38,7 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_RULES_ESALT (radmin3_t)) * modifier */ - const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); - const u64 lsz = get_local_size (0); - - - /** - * cache constant values to shared memory - */ - - LOCAL_VK u32 m[64]; - LOCAL_VK u32 r[64]; - LOCAL_VK u32 fact[64]; - - for (u32 i = lid; i < 64; i += lsz) - { - m[i] = RADMIN3_M[i]; - r[i] = RADMIN3_R[i]; - fact[i] = RADMIN3_FACT[i]; - } - - SYNC_THREADS (); - - if (gid >= GID_CNT) return; /** @@ -84,6 +62,62 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_RULES_ESALT (radmin3_t)) sha1_update_global (&ctx1, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + PRIVATE_AS const u32 m[128] = + { + RADMIN3_M[ 0], RADMIN3_M[ 1], RADMIN3_M[ 2], RADMIN3_M[ 3], + RADMIN3_M[ 4], RADMIN3_M[ 5], RADMIN3_M[ 6], RADMIN3_M[ 7], + RADMIN3_M[ 8], RADMIN3_M[ 9], RADMIN3_M[ 10], RADMIN3_M[ 11], + RADMIN3_M[ 12], RADMIN3_M[ 13], RADMIN3_M[ 14], RADMIN3_M[ 15], + RADMIN3_M[ 16], RADMIN3_M[ 17], RADMIN3_M[ 18], RADMIN3_M[ 19], + RADMIN3_M[ 20], RADMIN3_M[ 21], RADMIN3_M[ 22], RADMIN3_M[ 23], + RADMIN3_M[ 24], RADMIN3_M[ 25], RADMIN3_M[ 26], RADMIN3_M[ 27], + RADMIN3_M[ 28], RADMIN3_M[ 29], RADMIN3_M[ 30], RADMIN3_M[ 31], + RADMIN3_M[ 32], RADMIN3_M[ 33], RADMIN3_M[ 34], RADMIN3_M[ 35], + RADMIN3_M[ 36], RADMIN3_M[ 37], RADMIN3_M[ 38], RADMIN3_M[ 39], + RADMIN3_M[ 40], RADMIN3_M[ 41], RADMIN3_M[ 42], RADMIN3_M[ 43], + RADMIN3_M[ 44], RADMIN3_M[ 45], RADMIN3_M[ 46], RADMIN3_M[ 47], + RADMIN3_M[ 48], RADMIN3_M[ 49], RADMIN3_M[ 50], RADMIN3_M[ 51], + RADMIN3_M[ 52], RADMIN3_M[ 53], RADMIN3_M[ 54], RADMIN3_M[ 55], + RADMIN3_M[ 56], RADMIN3_M[ 57], RADMIN3_M[ 58], RADMIN3_M[ 59], + RADMIN3_M[ 60], RADMIN3_M[ 61], RADMIN3_M[ 62], RADMIN3_M[ 63], + RADMIN3_M[ 64], RADMIN3_M[ 65], RADMIN3_M[ 66], RADMIN3_M[ 67], + RADMIN3_M[ 68], RADMIN3_M[ 69], RADMIN3_M[ 70], RADMIN3_M[ 71], + RADMIN3_M[ 72], RADMIN3_M[ 73], RADMIN3_M[ 74], RADMIN3_M[ 75], + RADMIN3_M[ 76], RADMIN3_M[ 77], RADMIN3_M[ 78], RADMIN3_M[ 79], + RADMIN3_M[ 80], RADMIN3_M[ 81], RADMIN3_M[ 82], RADMIN3_M[ 83], + RADMIN3_M[ 84], RADMIN3_M[ 85], RADMIN3_M[ 86], RADMIN3_M[ 87], + RADMIN3_M[ 88], RADMIN3_M[ 89], RADMIN3_M[ 90], RADMIN3_M[ 91], + RADMIN3_M[ 92], RADMIN3_M[ 93], RADMIN3_M[ 94], RADMIN3_M[ 95], + RADMIN3_M[ 96], RADMIN3_M[ 97], RADMIN3_M[ 98], RADMIN3_M[ 99], + RADMIN3_M[100], RADMIN3_M[101], RADMIN3_M[102], RADMIN3_M[103], + RADMIN3_M[104], RADMIN3_M[105], RADMIN3_M[106], RADMIN3_M[107], + RADMIN3_M[108], RADMIN3_M[109], RADMIN3_M[110], RADMIN3_M[111], + RADMIN3_M[112], RADMIN3_M[113], RADMIN3_M[114], RADMIN3_M[115], + RADMIN3_M[116], RADMIN3_M[117], RADMIN3_M[118], RADMIN3_M[119], + RADMIN3_M[120], RADMIN3_M[121], RADMIN3_M[122], RADMIN3_M[123], + RADMIN3_M[124], RADMIN3_M[125], RADMIN3_M[126], RADMIN3_M[127], + }; + + PRIVATE_AS const u32 fact[64] = + { + RADMIN3_FACT[ 0], RADMIN3_FACT[ 1], RADMIN3_FACT[ 2], RADMIN3_FACT[ 3], + RADMIN3_FACT[ 4], RADMIN3_FACT[ 5], RADMIN3_FACT[ 6], RADMIN3_FACT[ 7], + RADMIN3_FACT[ 8], RADMIN3_FACT[ 9], RADMIN3_FACT[10], RADMIN3_FACT[11], + RADMIN3_FACT[12], RADMIN3_FACT[13], RADMIN3_FACT[14], RADMIN3_FACT[15], + RADMIN3_FACT[16], RADMIN3_FACT[17], RADMIN3_FACT[18], RADMIN3_FACT[19], + RADMIN3_FACT[20], RADMIN3_FACT[21], RADMIN3_FACT[22], RADMIN3_FACT[23], + RADMIN3_FACT[24], RADMIN3_FACT[25], RADMIN3_FACT[26], RADMIN3_FACT[27], + RADMIN3_FACT[28], RADMIN3_FACT[29], RADMIN3_FACT[30], RADMIN3_FACT[31], + RADMIN3_FACT[32], RADMIN3_FACT[33], RADMIN3_FACT[34], RADMIN3_FACT[35], + RADMIN3_FACT[36], RADMIN3_FACT[37], RADMIN3_FACT[38], RADMIN3_FACT[39], + RADMIN3_FACT[40], RADMIN3_FACT[41], RADMIN3_FACT[42], RADMIN3_FACT[43], + RADMIN3_FACT[44], RADMIN3_FACT[45], RADMIN3_FACT[46], RADMIN3_FACT[47], + RADMIN3_FACT[48], RADMIN3_FACT[49], RADMIN3_FACT[50], RADMIN3_FACT[51], + RADMIN3_FACT[52], RADMIN3_FACT[53], RADMIN3_FACT[54], RADMIN3_FACT[55], + RADMIN3_FACT[56], RADMIN3_FACT[57], RADMIN3_FACT[58], RADMIN3_FACT[59], + RADMIN3_FACT[60], RADMIN3_FACT[61], RADMIN3_FACT[62], RADMIN3_FACT[63], + }; + COPY_PW (pws[gid]); @@ -128,18 +162,24 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_RULES_ESALT (radmin3_t)) const u32 e[5] = { c1.h[4], c1.h[3], c1.h[2], c1.h[1], c1.h[0] }; - // u32 r_t[64]; for (u32 i = 0; i < 64; i++) r_t[i] = r[i]; - u32 r_t[64] = { - r[ 0], r[ 1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7], - r[ 8], r[ 9], r[10], r[11], r[12], r[13], r[14], r[15], - r[16], r[17], r[18], r[19], r[20], r[21], r[22], r[23], - r[24], r[25], r[26], r[27], r[28], r[29], r[30], r[31], - r[32], r[33], r[34], r[35], r[36], r[37], r[38], r[39], - r[40], r[41], r[42], r[43], r[44], r[45], r[46], r[47], - r[48], r[49], r[50], r[51], r[52], r[53], r[54], r[55], - r[56], r[57], r[58], r[59], r[60], r[61], r[62], r[63], + RADMIN3_R[ 0], RADMIN3_R[ 1], RADMIN3_R[ 2], RADMIN3_R[ 3], + RADMIN3_R[ 4], RADMIN3_R[ 5], RADMIN3_R[ 6], RADMIN3_R[ 7], + RADMIN3_R[ 8], RADMIN3_R[ 9], RADMIN3_R[10], RADMIN3_R[11], + RADMIN3_R[12], RADMIN3_R[13], RADMIN3_R[14], RADMIN3_R[15], + RADMIN3_R[16], RADMIN3_R[17], RADMIN3_R[18], RADMIN3_R[19], + RADMIN3_R[20], RADMIN3_R[21], RADMIN3_R[22], RADMIN3_R[23], + RADMIN3_R[24], RADMIN3_R[25], RADMIN3_R[26], RADMIN3_R[27], + RADMIN3_R[28], RADMIN3_R[29], RADMIN3_R[30], RADMIN3_R[31], + RADMIN3_R[32], RADMIN3_R[33], RADMIN3_R[34], RADMIN3_R[35], + RADMIN3_R[36], RADMIN3_R[37], RADMIN3_R[38], RADMIN3_R[39], + RADMIN3_R[40], RADMIN3_R[41], RADMIN3_R[42], RADMIN3_R[43], + RADMIN3_R[44], RADMIN3_R[45], RADMIN3_R[46], RADMIN3_R[47], + RADMIN3_R[48], RADMIN3_R[49], RADMIN3_R[50], RADMIN3_R[51], + RADMIN3_R[52], RADMIN3_R[53], RADMIN3_R[54], RADMIN3_R[55], + RADMIN3_R[56], RADMIN3_R[57], RADMIN3_R[58], RADMIN3_R[59], + RADMIN3_R[60], RADMIN3_R[61], RADMIN3_R[62], RADMIN3_R[63], }; @@ -252,29 +292,7 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_RULES_ESALT (radmin3_t)) * modifier */ - const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); - const u64 lsz = get_local_size (0); - - - /** - * cache constant values to shared memory - */ - - LOCAL_VK u32 m[64]; - LOCAL_VK u32 r[64]; - LOCAL_VK u32 fact[64]; - - for (u32 i = lid; i < 64; i += lsz) - { - m[i] = RADMIN3_M[i]; - r[i] = RADMIN3_R[i]; - fact[i] = RADMIN3_FACT[i]; - } - - SYNC_THREADS (); - - if (gid >= GID_CNT) return; /** @@ -310,6 +328,62 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_RULES_ESALT (radmin3_t)) sha1_update_global (&ctx1, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + PRIVATE_AS const u32 m[128] = + { + RADMIN3_M[ 0], RADMIN3_M[ 1], RADMIN3_M[ 2], RADMIN3_M[ 3], + RADMIN3_M[ 4], RADMIN3_M[ 5], RADMIN3_M[ 6], RADMIN3_M[ 7], + RADMIN3_M[ 8], RADMIN3_M[ 9], RADMIN3_M[ 10], RADMIN3_M[ 11], + RADMIN3_M[ 12], RADMIN3_M[ 13], RADMIN3_M[ 14], RADMIN3_M[ 15], + RADMIN3_M[ 16], RADMIN3_M[ 17], RADMIN3_M[ 18], RADMIN3_M[ 19], + RADMIN3_M[ 20], RADMIN3_M[ 21], RADMIN3_M[ 22], RADMIN3_M[ 23], + RADMIN3_M[ 24], RADMIN3_M[ 25], RADMIN3_M[ 26], RADMIN3_M[ 27], + RADMIN3_M[ 28], RADMIN3_M[ 29], RADMIN3_M[ 30], RADMIN3_M[ 31], + RADMIN3_M[ 32], RADMIN3_M[ 33], RADMIN3_M[ 34], RADMIN3_M[ 35], + RADMIN3_M[ 36], RADMIN3_M[ 37], RADMIN3_M[ 38], RADMIN3_M[ 39], + RADMIN3_M[ 40], RADMIN3_M[ 41], RADMIN3_M[ 42], RADMIN3_M[ 43], + RADMIN3_M[ 44], RADMIN3_M[ 45], RADMIN3_M[ 46], RADMIN3_M[ 47], + RADMIN3_M[ 48], RADMIN3_M[ 49], RADMIN3_M[ 50], RADMIN3_M[ 51], + RADMIN3_M[ 52], RADMIN3_M[ 53], RADMIN3_M[ 54], RADMIN3_M[ 55], + RADMIN3_M[ 56], RADMIN3_M[ 57], RADMIN3_M[ 58], RADMIN3_M[ 59], + RADMIN3_M[ 60], RADMIN3_M[ 61], RADMIN3_M[ 62], RADMIN3_M[ 63], + RADMIN3_M[ 64], RADMIN3_M[ 65], RADMIN3_M[ 66], RADMIN3_M[ 67], + RADMIN3_M[ 68], RADMIN3_M[ 69], RADMIN3_M[ 70], RADMIN3_M[ 71], + RADMIN3_M[ 72], RADMIN3_M[ 73], RADMIN3_M[ 74], RADMIN3_M[ 75], + RADMIN3_M[ 76], RADMIN3_M[ 77], RADMIN3_M[ 78], RADMIN3_M[ 79], + RADMIN3_M[ 80], RADMIN3_M[ 81], RADMIN3_M[ 82], RADMIN3_M[ 83], + RADMIN3_M[ 84], RADMIN3_M[ 85], RADMIN3_M[ 86], RADMIN3_M[ 87], + RADMIN3_M[ 88], RADMIN3_M[ 89], RADMIN3_M[ 90], RADMIN3_M[ 91], + RADMIN3_M[ 92], RADMIN3_M[ 93], RADMIN3_M[ 94], RADMIN3_M[ 95], + RADMIN3_M[ 96], RADMIN3_M[ 97], RADMIN3_M[ 98], RADMIN3_M[ 99], + RADMIN3_M[100], RADMIN3_M[101], RADMIN3_M[102], RADMIN3_M[103], + RADMIN3_M[104], RADMIN3_M[105], RADMIN3_M[106], RADMIN3_M[107], + RADMIN3_M[108], RADMIN3_M[109], RADMIN3_M[110], RADMIN3_M[111], + RADMIN3_M[112], RADMIN3_M[113], RADMIN3_M[114], RADMIN3_M[115], + RADMIN3_M[116], RADMIN3_M[117], RADMIN3_M[118], RADMIN3_M[119], + RADMIN3_M[120], RADMIN3_M[121], RADMIN3_M[122], RADMIN3_M[123], + RADMIN3_M[124], RADMIN3_M[125], RADMIN3_M[126], RADMIN3_M[127], + }; + + PRIVATE_AS const u32 fact[64] = + { + RADMIN3_FACT[ 0], RADMIN3_FACT[ 1], RADMIN3_FACT[ 2], RADMIN3_FACT[ 3], + RADMIN3_FACT[ 4], RADMIN3_FACT[ 5], RADMIN3_FACT[ 6], RADMIN3_FACT[ 7], + RADMIN3_FACT[ 8], RADMIN3_FACT[ 9], RADMIN3_FACT[10], RADMIN3_FACT[11], + RADMIN3_FACT[12], RADMIN3_FACT[13], RADMIN3_FACT[14], RADMIN3_FACT[15], + RADMIN3_FACT[16], RADMIN3_FACT[17], RADMIN3_FACT[18], RADMIN3_FACT[19], + RADMIN3_FACT[20], RADMIN3_FACT[21], RADMIN3_FACT[22], RADMIN3_FACT[23], + RADMIN3_FACT[24], RADMIN3_FACT[25], RADMIN3_FACT[26], RADMIN3_FACT[27], + RADMIN3_FACT[28], RADMIN3_FACT[29], RADMIN3_FACT[30], RADMIN3_FACT[31], + RADMIN3_FACT[32], RADMIN3_FACT[33], RADMIN3_FACT[34], RADMIN3_FACT[35], + RADMIN3_FACT[36], RADMIN3_FACT[37], RADMIN3_FACT[38], RADMIN3_FACT[39], + RADMIN3_FACT[40], RADMIN3_FACT[41], RADMIN3_FACT[42], RADMIN3_FACT[43], + RADMIN3_FACT[44], RADMIN3_FACT[45], RADMIN3_FACT[46], RADMIN3_FACT[47], + RADMIN3_FACT[48], RADMIN3_FACT[49], RADMIN3_FACT[50], RADMIN3_FACT[51], + RADMIN3_FACT[52], RADMIN3_FACT[53], RADMIN3_FACT[54], RADMIN3_FACT[55], + RADMIN3_FACT[56], RADMIN3_FACT[57], RADMIN3_FACT[58], RADMIN3_FACT[59], + RADMIN3_FACT[60], RADMIN3_FACT[61], RADMIN3_FACT[62], RADMIN3_FACT[63], + }; + COPY_PW (pws[gid]); @@ -354,18 +428,24 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_RULES_ESALT (radmin3_t)) const u32 e[5] = { c1.h[4], c1.h[3], c1.h[2], c1.h[1], c1.h[0] }; - // u32 r_t[64]; for (u32 i = 0; i < 64; i++) r_t[i] = r[i]; - u32 r_t[64] = { - r[ 0], r[ 1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7], - r[ 8], r[ 9], r[10], r[11], r[12], r[13], r[14], r[15], - r[16], r[17], r[18], r[19], r[20], r[21], r[22], r[23], - r[24], r[25], r[26], r[27], r[28], r[29], r[30], r[31], - r[32], r[33], r[34], r[35], r[36], r[37], r[38], r[39], - r[40], r[41], r[42], r[43], r[44], r[45], r[46], r[47], - r[48], r[49], r[50], r[51], r[52], r[53], r[54], r[55], - r[56], r[57], r[58], r[59], r[60], r[61], r[62], r[63], + RADMIN3_R[ 0], RADMIN3_R[ 1], RADMIN3_R[ 2], RADMIN3_R[ 3], + RADMIN3_R[ 4], RADMIN3_R[ 5], RADMIN3_R[ 6], RADMIN3_R[ 7], + RADMIN3_R[ 8], RADMIN3_R[ 9], RADMIN3_R[10], RADMIN3_R[11], + RADMIN3_R[12], RADMIN3_R[13], RADMIN3_R[14], RADMIN3_R[15], + RADMIN3_R[16], RADMIN3_R[17], RADMIN3_R[18], RADMIN3_R[19], + RADMIN3_R[20], RADMIN3_R[21], RADMIN3_R[22], RADMIN3_R[23], + RADMIN3_R[24], RADMIN3_R[25], RADMIN3_R[26], RADMIN3_R[27], + RADMIN3_R[28], RADMIN3_R[29], RADMIN3_R[30], RADMIN3_R[31], + RADMIN3_R[32], RADMIN3_R[33], RADMIN3_R[34], RADMIN3_R[35], + RADMIN3_R[36], RADMIN3_R[37], RADMIN3_R[38], RADMIN3_R[39], + RADMIN3_R[40], RADMIN3_R[41], RADMIN3_R[42], RADMIN3_R[43], + RADMIN3_R[44], RADMIN3_R[45], RADMIN3_R[46], RADMIN3_R[47], + RADMIN3_R[48], RADMIN3_R[49], RADMIN3_R[50], RADMIN3_R[51], + RADMIN3_R[52], RADMIN3_R[53], RADMIN3_R[54], RADMIN3_R[55], + RADMIN3_R[56], RADMIN3_R[57], RADMIN3_R[58], RADMIN3_R[59], + RADMIN3_R[60], RADMIN3_R[61], RADMIN3_R[62], RADMIN3_R[63], }; diff --git a/OpenCL/m29200_a1-pure.cl b/OpenCL/m29200_a1-pure.cl index 4c96a8e2e..d5d8e7fb6 100644 --- a/OpenCL/m29200_a1-pure.cl +++ b/OpenCL/m29200_a1-pure.cl @@ -36,29 +36,7 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_ESALT (radmin3_t)) * modifier */ - const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); - const u64 lsz = get_local_size (0); - - - /** - * cache constant values to shared memory - */ - - LOCAL_VK u32 m[64]; - LOCAL_VK u32 r[64]; - LOCAL_VK u32 fact[64]; - - for (u32 i = lid; i < 64; i += lsz) - { - m[i] = RADMIN3_M[i]; - r[i] = RADMIN3_R[i]; - fact[i] = RADMIN3_FACT[i]; - } - - SYNC_THREADS (); - - if (gid >= GID_CNT) return; /** @@ -94,6 +72,62 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_ESALT (radmin3_t)) sha1_update_global (&ctx1, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + PRIVATE_AS const u32 m[128] = + { + RADMIN3_M[ 0], RADMIN3_M[ 1], RADMIN3_M[ 2], RADMIN3_M[ 3], + RADMIN3_M[ 4], RADMIN3_M[ 5], RADMIN3_M[ 6], RADMIN3_M[ 7], + RADMIN3_M[ 8], RADMIN3_M[ 9], RADMIN3_M[ 10], RADMIN3_M[ 11], + RADMIN3_M[ 12], RADMIN3_M[ 13], RADMIN3_M[ 14], RADMIN3_M[ 15], + RADMIN3_M[ 16], RADMIN3_M[ 17], RADMIN3_M[ 18], RADMIN3_M[ 19], + RADMIN3_M[ 20], RADMIN3_M[ 21], RADMIN3_M[ 22], RADMIN3_M[ 23], + RADMIN3_M[ 24], RADMIN3_M[ 25], RADMIN3_M[ 26], RADMIN3_M[ 27], + RADMIN3_M[ 28], RADMIN3_M[ 29], RADMIN3_M[ 30], RADMIN3_M[ 31], + RADMIN3_M[ 32], RADMIN3_M[ 33], RADMIN3_M[ 34], RADMIN3_M[ 35], + RADMIN3_M[ 36], RADMIN3_M[ 37], RADMIN3_M[ 38], RADMIN3_M[ 39], + RADMIN3_M[ 40], RADMIN3_M[ 41], RADMIN3_M[ 42], RADMIN3_M[ 43], + RADMIN3_M[ 44], RADMIN3_M[ 45], RADMIN3_M[ 46], RADMIN3_M[ 47], + RADMIN3_M[ 48], RADMIN3_M[ 49], RADMIN3_M[ 50], RADMIN3_M[ 51], + RADMIN3_M[ 52], RADMIN3_M[ 53], RADMIN3_M[ 54], RADMIN3_M[ 55], + RADMIN3_M[ 56], RADMIN3_M[ 57], RADMIN3_M[ 58], RADMIN3_M[ 59], + RADMIN3_M[ 60], RADMIN3_M[ 61], RADMIN3_M[ 62], RADMIN3_M[ 63], + RADMIN3_M[ 64], RADMIN3_M[ 65], RADMIN3_M[ 66], RADMIN3_M[ 67], + RADMIN3_M[ 68], RADMIN3_M[ 69], RADMIN3_M[ 70], RADMIN3_M[ 71], + RADMIN3_M[ 72], RADMIN3_M[ 73], RADMIN3_M[ 74], RADMIN3_M[ 75], + RADMIN3_M[ 76], RADMIN3_M[ 77], RADMIN3_M[ 78], RADMIN3_M[ 79], + RADMIN3_M[ 80], RADMIN3_M[ 81], RADMIN3_M[ 82], RADMIN3_M[ 83], + RADMIN3_M[ 84], RADMIN3_M[ 85], RADMIN3_M[ 86], RADMIN3_M[ 87], + RADMIN3_M[ 88], RADMIN3_M[ 89], RADMIN3_M[ 90], RADMIN3_M[ 91], + RADMIN3_M[ 92], RADMIN3_M[ 93], RADMIN3_M[ 94], RADMIN3_M[ 95], + RADMIN3_M[ 96], RADMIN3_M[ 97], RADMIN3_M[ 98], RADMIN3_M[ 99], + RADMIN3_M[100], RADMIN3_M[101], RADMIN3_M[102], RADMIN3_M[103], + RADMIN3_M[104], RADMIN3_M[105], RADMIN3_M[106], RADMIN3_M[107], + RADMIN3_M[108], RADMIN3_M[109], RADMIN3_M[110], RADMIN3_M[111], + RADMIN3_M[112], RADMIN3_M[113], RADMIN3_M[114], RADMIN3_M[115], + RADMIN3_M[116], RADMIN3_M[117], RADMIN3_M[118], RADMIN3_M[119], + RADMIN3_M[120], RADMIN3_M[121], RADMIN3_M[122], RADMIN3_M[123], + RADMIN3_M[124], RADMIN3_M[125], RADMIN3_M[126], RADMIN3_M[127], + }; + + PRIVATE_AS const u32 fact[64] = + { + RADMIN3_FACT[ 0], RADMIN3_FACT[ 1], RADMIN3_FACT[ 2], RADMIN3_FACT[ 3], + RADMIN3_FACT[ 4], RADMIN3_FACT[ 5], RADMIN3_FACT[ 6], RADMIN3_FACT[ 7], + RADMIN3_FACT[ 8], RADMIN3_FACT[ 9], RADMIN3_FACT[10], RADMIN3_FACT[11], + RADMIN3_FACT[12], RADMIN3_FACT[13], RADMIN3_FACT[14], RADMIN3_FACT[15], + RADMIN3_FACT[16], RADMIN3_FACT[17], RADMIN3_FACT[18], RADMIN3_FACT[19], + RADMIN3_FACT[20], RADMIN3_FACT[21], RADMIN3_FACT[22], RADMIN3_FACT[23], + RADMIN3_FACT[24], RADMIN3_FACT[25], RADMIN3_FACT[26], RADMIN3_FACT[27], + RADMIN3_FACT[28], RADMIN3_FACT[29], RADMIN3_FACT[30], RADMIN3_FACT[31], + RADMIN3_FACT[32], RADMIN3_FACT[33], RADMIN3_FACT[34], RADMIN3_FACT[35], + RADMIN3_FACT[36], RADMIN3_FACT[37], RADMIN3_FACT[38], RADMIN3_FACT[39], + RADMIN3_FACT[40], RADMIN3_FACT[41], RADMIN3_FACT[42], RADMIN3_FACT[43], + RADMIN3_FACT[44], RADMIN3_FACT[45], RADMIN3_FACT[46], RADMIN3_FACT[47], + RADMIN3_FACT[48], RADMIN3_FACT[49], RADMIN3_FACT[50], RADMIN3_FACT[51], + RADMIN3_FACT[52], RADMIN3_FACT[53], RADMIN3_FACT[54], RADMIN3_FACT[55], + RADMIN3_FACT[56], RADMIN3_FACT[57], RADMIN3_FACT[58], RADMIN3_FACT[59], + RADMIN3_FACT[60], RADMIN3_FACT[61], RADMIN3_FACT[62], RADMIN3_FACT[63], + }; + /** * loop @@ -131,18 +165,24 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_ESALT (radmin3_t)) const u32 e[5] = { c1.h[4], c1.h[3], c1.h[2], c1.h[1], c1.h[0] }; - // u32 r_t[64]; for (u32 i = 0; i < 64; i++) r_t[i] = r[i]; - u32 r_t[64] = { - r[ 0], r[ 1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7], - r[ 8], r[ 9], r[10], r[11], r[12], r[13], r[14], r[15], - r[16], r[17], r[18], r[19], r[20], r[21], r[22], r[23], - r[24], r[25], r[26], r[27], r[28], r[29], r[30], r[31], - r[32], r[33], r[34], r[35], r[36], r[37], r[38], r[39], - r[40], r[41], r[42], r[43], r[44], r[45], r[46], r[47], - r[48], r[49], r[50], r[51], r[52], r[53], r[54], r[55], - r[56], r[57], r[58], r[59], r[60], r[61], r[62], r[63], + RADMIN3_R[ 0], RADMIN3_R[ 1], RADMIN3_R[ 2], RADMIN3_R[ 3], + RADMIN3_R[ 4], RADMIN3_R[ 5], RADMIN3_R[ 6], RADMIN3_R[ 7], + RADMIN3_R[ 8], RADMIN3_R[ 9], RADMIN3_R[10], RADMIN3_R[11], + RADMIN3_R[12], RADMIN3_R[13], RADMIN3_R[14], RADMIN3_R[15], + RADMIN3_R[16], RADMIN3_R[17], RADMIN3_R[18], RADMIN3_R[19], + RADMIN3_R[20], RADMIN3_R[21], RADMIN3_R[22], RADMIN3_R[23], + RADMIN3_R[24], RADMIN3_R[25], RADMIN3_R[26], RADMIN3_R[27], + RADMIN3_R[28], RADMIN3_R[29], RADMIN3_R[30], RADMIN3_R[31], + RADMIN3_R[32], RADMIN3_R[33], RADMIN3_R[34], RADMIN3_R[35], + RADMIN3_R[36], RADMIN3_R[37], RADMIN3_R[38], RADMIN3_R[39], + RADMIN3_R[40], RADMIN3_R[41], RADMIN3_R[42], RADMIN3_R[43], + RADMIN3_R[44], RADMIN3_R[45], RADMIN3_R[46], RADMIN3_R[47], + RADMIN3_R[48], RADMIN3_R[49], RADMIN3_R[50], RADMIN3_R[51], + RADMIN3_R[52], RADMIN3_R[53], RADMIN3_R[54], RADMIN3_R[55], + RADMIN3_R[56], RADMIN3_R[57], RADMIN3_R[58], RADMIN3_R[59], + RADMIN3_R[60], RADMIN3_R[61], RADMIN3_R[62], RADMIN3_R[63], }; @@ -255,29 +295,7 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_ESALT (radmin3_t)) * modifier */ - const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); - const u64 lsz = get_local_size (0); - - - /** - * cache constant values to shared memory - */ - - LOCAL_VK u32 m[64]; - LOCAL_VK u32 r[64]; - LOCAL_VK u32 fact[64]; - - for (u32 i = lid; i < 64; i += lsz) - { - m[i] = RADMIN3_M[i]; - r[i] = RADMIN3_R[i]; - fact[i] = RADMIN3_FACT[i]; - } - - SYNC_THREADS (); - - if (gid >= GID_CNT) return; /** @@ -325,6 +343,62 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_ESALT (radmin3_t)) sha1_update_global (&ctx1, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + PRIVATE_AS const u32 m[128] = + { + RADMIN3_M[ 0], RADMIN3_M[ 1], RADMIN3_M[ 2], RADMIN3_M[ 3], + RADMIN3_M[ 4], RADMIN3_M[ 5], RADMIN3_M[ 6], RADMIN3_M[ 7], + RADMIN3_M[ 8], RADMIN3_M[ 9], RADMIN3_M[ 10], RADMIN3_M[ 11], + RADMIN3_M[ 12], RADMIN3_M[ 13], RADMIN3_M[ 14], RADMIN3_M[ 15], + RADMIN3_M[ 16], RADMIN3_M[ 17], RADMIN3_M[ 18], RADMIN3_M[ 19], + RADMIN3_M[ 20], RADMIN3_M[ 21], RADMIN3_M[ 22], RADMIN3_M[ 23], + RADMIN3_M[ 24], RADMIN3_M[ 25], RADMIN3_M[ 26], RADMIN3_M[ 27], + RADMIN3_M[ 28], RADMIN3_M[ 29], RADMIN3_M[ 30], RADMIN3_M[ 31], + RADMIN3_M[ 32], RADMIN3_M[ 33], RADMIN3_M[ 34], RADMIN3_M[ 35], + RADMIN3_M[ 36], RADMIN3_M[ 37], RADMIN3_M[ 38], RADMIN3_M[ 39], + RADMIN3_M[ 40], RADMIN3_M[ 41], RADMIN3_M[ 42], RADMIN3_M[ 43], + RADMIN3_M[ 44], RADMIN3_M[ 45], RADMIN3_M[ 46], RADMIN3_M[ 47], + RADMIN3_M[ 48], RADMIN3_M[ 49], RADMIN3_M[ 50], RADMIN3_M[ 51], + RADMIN3_M[ 52], RADMIN3_M[ 53], RADMIN3_M[ 54], RADMIN3_M[ 55], + RADMIN3_M[ 56], RADMIN3_M[ 57], RADMIN3_M[ 58], RADMIN3_M[ 59], + RADMIN3_M[ 60], RADMIN3_M[ 61], RADMIN3_M[ 62], RADMIN3_M[ 63], + RADMIN3_M[ 64], RADMIN3_M[ 65], RADMIN3_M[ 66], RADMIN3_M[ 67], + RADMIN3_M[ 68], RADMIN3_M[ 69], RADMIN3_M[ 70], RADMIN3_M[ 71], + RADMIN3_M[ 72], RADMIN3_M[ 73], RADMIN3_M[ 74], RADMIN3_M[ 75], + RADMIN3_M[ 76], RADMIN3_M[ 77], RADMIN3_M[ 78], RADMIN3_M[ 79], + RADMIN3_M[ 80], RADMIN3_M[ 81], RADMIN3_M[ 82], RADMIN3_M[ 83], + RADMIN3_M[ 84], RADMIN3_M[ 85], RADMIN3_M[ 86], RADMIN3_M[ 87], + RADMIN3_M[ 88], RADMIN3_M[ 89], RADMIN3_M[ 90], RADMIN3_M[ 91], + RADMIN3_M[ 92], RADMIN3_M[ 93], RADMIN3_M[ 94], RADMIN3_M[ 95], + RADMIN3_M[ 96], RADMIN3_M[ 97], RADMIN3_M[ 98], RADMIN3_M[ 99], + RADMIN3_M[100], RADMIN3_M[101], RADMIN3_M[102], RADMIN3_M[103], + RADMIN3_M[104], RADMIN3_M[105], RADMIN3_M[106], RADMIN3_M[107], + RADMIN3_M[108], RADMIN3_M[109], RADMIN3_M[110], RADMIN3_M[111], + RADMIN3_M[112], RADMIN3_M[113], RADMIN3_M[114], RADMIN3_M[115], + RADMIN3_M[116], RADMIN3_M[117], RADMIN3_M[118], RADMIN3_M[119], + RADMIN3_M[120], RADMIN3_M[121], RADMIN3_M[122], RADMIN3_M[123], + RADMIN3_M[124], RADMIN3_M[125], RADMIN3_M[126], RADMIN3_M[127], + }; + + PRIVATE_AS const u32 fact[64] = + { + RADMIN3_FACT[ 0], RADMIN3_FACT[ 1], RADMIN3_FACT[ 2], RADMIN3_FACT[ 3], + RADMIN3_FACT[ 4], RADMIN3_FACT[ 5], RADMIN3_FACT[ 6], RADMIN3_FACT[ 7], + RADMIN3_FACT[ 8], RADMIN3_FACT[ 9], RADMIN3_FACT[10], RADMIN3_FACT[11], + RADMIN3_FACT[12], RADMIN3_FACT[13], RADMIN3_FACT[14], RADMIN3_FACT[15], + RADMIN3_FACT[16], RADMIN3_FACT[17], RADMIN3_FACT[18], RADMIN3_FACT[19], + RADMIN3_FACT[20], RADMIN3_FACT[21], RADMIN3_FACT[22], RADMIN3_FACT[23], + RADMIN3_FACT[24], RADMIN3_FACT[25], RADMIN3_FACT[26], RADMIN3_FACT[27], + RADMIN3_FACT[28], RADMIN3_FACT[29], RADMIN3_FACT[30], RADMIN3_FACT[31], + RADMIN3_FACT[32], RADMIN3_FACT[33], RADMIN3_FACT[34], RADMIN3_FACT[35], + RADMIN3_FACT[36], RADMIN3_FACT[37], RADMIN3_FACT[38], RADMIN3_FACT[39], + RADMIN3_FACT[40], RADMIN3_FACT[41], RADMIN3_FACT[42], RADMIN3_FACT[43], + RADMIN3_FACT[44], RADMIN3_FACT[45], RADMIN3_FACT[46], RADMIN3_FACT[47], + RADMIN3_FACT[48], RADMIN3_FACT[49], RADMIN3_FACT[50], RADMIN3_FACT[51], + RADMIN3_FACT[52], RADMIN3_FACT[53], RADMIN3_FACT[54], RADMIN3_FACT[55], + RADMIN3_FACT[56], RADMIN3_FACT[57], RADMIN3_FACT[58], RADMIN3_FACT[59], + RADMIN3_FACT[60], RADMIN3_FACT[61], RADMIN3_FACT[62], RADMIN3_FACT[63], + }; + /** * loop @@ -362,18 +436,24 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_ESALT (radmin3_t)) const u32 e[5] = { c1.h[4], c1.h[3], c1.h[2], c1.h[1], c1.h[0] }; - // u32 r_t[64]; for (u32 i = 0; i < 64; i++) r_t[i] = r[i]; - u32 r_t[64] = { - r[ 0], r[ 1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7], - r[ 8], r[ 9], r[10], r[11], r[12], r[13], r[14], r[15], - r[16], r[17], r[18], r[19], r[20], r[21], r[22], r[23], - r[24], r[25], r[26], r[27], r[28], r[29], r[30], r[31], - r[32], r[33], r[34], r[35], r[36], r[37], r[38], r[39], - r[40], r[41], r[42], r[43], r[44], r[45], r[46], r[47], - r[48], r[49], r[50], r[51], r[52], r[53], r[54], r[55], - r[56], r[57], r[58], r[59], r[60], r[61], r[62], r[63], + RADMIN3_R[ 0], RADMIN3_R[ 1], RADMIN3_R[ 2], RADMIN3_R[ 3], + RADMIN3_R[ 4], RADMIN3_R[ 5], RADMIN3_R[ 6], RADMIN3_R[ 7], + RADMIN3_R[ 8], RADMIN3_R[ 9], RADMIN3_R[10], RADMIN3_R[11], + RADMIN3_R[12], RADMIN3_R[13], RADMIN3_R[14], RADMIN3_R[15], + RADMIN3_R[16], RADMIN3_R[17], RADMIN3_R[18], RADMIN3_R[19], + RADMIN3_R[20], RADMIN3_R[21], RADMIN3_R[22], RADMIN3_R[23], + RADMIN3_R[24], RADMIN3_R[25], RADMIN3_R[26], RADMIN3_R[27], + RADMIN3_R[28], RADMIN3_R[29], RADMIN3_R[30], RADMIN3_R[31], + RADMIN3_R[32], RADMIN3_R[33], RADMIN3_R[34], RADMIN3_R[35], + RADMIN3_R[36], RADMIN3_R[37], RADMIN3_R[38], RADMIN3_R[39], + RADMIN3_R[40], RADMIN3_R[41], RADMIN3_R[42], RADMIN3_R[43], + RADMIN3_R[44], RADMIN3_R[45], RADMIN3_R[46], RADMIN3_R[47], + RADMIN3_R[48], RADMIN3_R[49], RADMIN3_R[50], RADMIN3_R[51], + RADMIN3_R[52], RADMIN3_R[53], RADMIN3_R[54], RADMIN3_R[55], + RADMIN3_R[56], RADMIN3_R[57], RADMIN3_R[58], RADMIN3_R[59], + RADMIN3_R[60], RADMIN3_R[61], RADMIN3_R[62], RADMIN3_R[63], }; diff --git a/OpenCL/m29200_a3-pure.cl b/OpenCL/m29200_a3-pure.cl index 05bc3eb63..f95459d65 100644 --- a/OpenCL/m29200_a3-pure.cl +++ b/OpenCL/m29200_a3-pure.cl @@ -36,29 +36,7 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) * modifier */ - const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); - const u64 lsz = get_local_size (0); - - - /** - * cache constant values to shared memory - */ - - LOCAL_VK u32 m[64]; - LOCAL_VK u32 r[64]; - LOCAL_VK u32 fact[64]; - - for (u32 i = lid; i < 64; i += lsz) - { - m[i] = RADMIN3_M[i]; - r[i] = RADMIN3_R[i]; - fact[i] = RADMIN3_FACT[i]; - } - - SYNC_THREADS (); - - if (gid >= GID_CNT) return; /** @@ -92,6 +70,62 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) sha1_update_global (&ctx1, salt_bufs[SALT_POS_HOST].salt_buf, salt_bufs[SALT_POS_HOST].salt_len); + PRIVATE_AS const u32 m[128] = + { + RADMIN3_M[ 0], RADMIN3_M[ 1], RADMIN3_M[ 2], RADMIN3_M[ 3], + RADMIN3_M[ 4], RADMIN3_M[ 5], RADMIN3_M[ 6], RADMIN3_M[ 7], + RADMIN3_M[ 8], RADMIN3_M[ 9], RADMIN3_M[ 10], RADMIN3_M[ 11], + RADMIN3_M[ 12], RADMIN3_M[ 13], RADMIN3_M[ 14], RADMIN3_M[ 15], + RADMIN3_M[ 16], RADMIN3_M[ 17], RADMIN3_M[ 18], RADMIN3_M[ 19], + RADMIN3_M[ 20], RADMIN3_M[ 21], RADMIN3_M[ 22], RADMIN3_M[ 23], + RADMIN3_M[ 24], RADMIN3_M[ 25], RADMIN3_M[ 26], RADMIN3_M[ 27], + RADMIN3_M[ 28], RADMIN3_M[ 29], RADMIN3_M[ 30], RADMIN3_M[ 31], + RADMIN3_M[ 32], RADMIN3_M[ 33], RADMIN3_M[ 34], RADMIN3_M[ 35], + RADMIN3_M[ 36], RADMIN3_M[ 37], RADMIN3_M[ 38], RADMIN3_M[ 39], + RADMIN3_M[ 40], RADMIN3_M[ 41], RADMIN3_M[ 42], RADMIN3_M[ 43], + RADMIN3_M[ 44], RADMIN3_M[ 45], RADMIN3_M[ 46], RADMIN3_M[ 47], + RADMIN3_M[ 48], RADMIN3_M[ 49], RADMIN3_M[ 50], RADMIN3_M[ 51], + RADMIN3_M[ 52], RADMIN3_M[ 53], RADMIN3_M[ 54], RADMIN3_M[ 55], + RADMIN3_M[ 56], RADMIN3_M[ 57], RADMIN3_M[ 58], RADMIN3_M[ 59], + RADMIN3_M[ 60], RADMIN3_M[ 61], RADMIN3_M[ 62], RADMIN3_M[ 63], + RADMIN3_M[ 64], RADMIN3_M[ 65], RADMIN3_M[ 66], RADMIN3_M[ 67], + RADMIN3_M[ 68], RADMIN3_M[ 69], RADMIN3_M[ 70], RADMIN3_M[ 71], + RADMIN3_M[ 72], RADMIN3_M[ 73], RADMIN3_M[ 74], RADMIN3_M[ 75], + RADMIN3_M[ 76], RADMIN3_M[ 77], RADMIN3_M[ 78], RADMIN3_M[ 79], + RADMIN3_M[ 80], RADMIN3_M[ 81], RADMIN3_M[ 82], RADMIN3_M[ 83], + RADMIN3_M[ 84], RADMIN3_M[ 85], RADMIN3_M[ 86], RADMIN3_M[ 87], + RADMIN3_M[ 88], RADMIN3_M[ 89], RADMIN3_M[ 90], RADMIN3_M[ 91], + RADMIN3_M[ 92], RADMIN3_M[ 93], RADMIN3_M[ 94], RADMIN3_M[ 95], + RADMIN3_M[ 96], RADMIN3_M[ 97], RADMIN3_M[ 98], RADMIN3_M[ 99], + RADMIN3_M[100], RADMIN3_M[101], RADMIN3_M[102], RADMIN3_M[103], + RADMIN3_M[104], RADMIN3_M[105], RADMIN3_M[106], RADMIN3_M[107], + RADMIN3_M[108], RADMIN3_M[109], RADMIN3_M[110], RADMIN3_M[111], + RADMIN3_M[112], RADMIN3_M[113], RADMIN3_M[114], RADMIN3_M[115], + RADMIN3_M[116], RADMIN3_M[117], RADMIN3_M[118], RADMIN3_M[119], + RADMIN3_M[120], RADMIN3_M[121], RADMIN3_M[122], RADMIN3_M[123], + RADMIN3_M[124], RADMIN3_M[125], RADMIN3_M[126], RADMIN3_M[127], + }; + + PRIVATE_AS const u32 fact[64] = + { + RADMIN3_FACT[ 0], RADMIN3_FACT[ 1], RADMIN3_FACT[ 2], RADMIN3_FACT[ 3], + RADMIN3_FACT[ 4], RADMIN3_FACT[ 5], RADMIN3_FACT[ 6], RADMIN3_FACT[ 7], + RADMIN3_FACT[ 8], RADMIN3_FACT[ 9], RADMIN3_FACT[10], RADMIN3_FACT[11], + RADMIN3_FACT[12], RADMIN3_FACT[13], RADMIN3_FACT[14], RADMIN3_FACT[15], + RADMIN3_FACT[16], RADMIN3_FACT[17], RADMIN3_FACT[18], RADMIN3_FACT[19], + RADMIN3_FACT[20], RADMIN3_FACT[21], RADMIN3_FACT[22], RADMIN3_FACT[23], + RADMIN3_FACT[24], RADMIN3_FACT[25], RADMIN3_FACT[26], RADMIN3_FACT[27], + RADMIN3_FACT[28], RADMIN3_FACT[29], RADMIN3_FACT[30], RADMIN3_FACT[31], + RADMIN3_FACT[32], RADMIN3_FACT[33], RADMIN3_FACT[34], RADMIN3_FACT[35], + RADMIN3_FACT[36], RADMIN3_FACT[37], RADMIN3_FACT[38], RADMIN3_FACT[39], + RADMIN3_FACT[40], RADMIN3_FACT[41], RADMIN3_FACT[42], RADMIN3_FACT[43], + RADMIN3_FACT[44], RADMIN3_FACT[45], RADMIN3_FACT[46], RADMIN3_FACT[47], + RADMIN3_FACT[48], RADMIN3_FACT[49], RADMIN3_FACT[50], RADMIN3_FACT[51], + RADMIN3_FACT[52], RADMIN3_FACT[53], RADMIN3_FACT[54], RADMIN3_FACT[55], + RADMIN3_FACT[56], RADMIN3_FACT[57], RADMIN3_FACT[58], RADMIN3_FACT[59], + RADMIN3_FACT[60], RADMIN3_FACT[61], RADMIN3_FACT[62], RADMIN3_FACT[63], + }; + /** * loop @@ -140,18 +174,24 @@ KERNEL_FQ void m29200_mxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) const u32 e[5] = { c1.h[4], c1.h[3], c1.h[2], c1.h[1], c1.h[0] }; - // u32 r_t[64]; for (u32 i = 0; i < 64; i++) r_t[i] = r[i]; - u32 r_t[64] = { - r[ 0], r[ 1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7], - r[ 8], r[ 9], r[10], r[11], r[12], r[13], r[14], r[15], - r[16], r[17], r[18], r[19], r[20], r[21], r[22], r[23], - r[24], r[25], r[26], r[27], r[28], r[29], r[30], r[31], - r[32], r[33], r[34], r[35], r[36], r[37], r[38], r[39], - r[40], r[41], r[42], r[43], r[44], r[45], r[46], r[47], - r[48], r[49], r[50], r[51], r[52], r[53], r[54], r[55], - r[56], r[57], r[58], r[59], r[60], r[61], r[62], r[63], + RADMIN3_R[ 0], RADMIN3_R[ 1], RADMIN3_R[ 2], RADMIN3_R[ 3], + RADMIN3_R[ 4], RADMIN3_R[ 5], RADMIN3_R[ 6], RADMIN3_R[ 7], + RADMIN3_R[ 8], RADMIN3_R[ 9], RADMIN3_R[10], RADMIN3_R[11], + RADMIN3_R[12], RADMIN3_R[13], RADMIN3_R[14], RADMIN3_R[15], + RADMIN3_R[16], RADMIN3_R[17], RADMIN3_R[18], RADMIN3_R[19], + RADMIN3_R[20], RADMIN3_R[21], RADMIN3_R[22], RADMIN3_R[23], + RADMIN3_R[24], RADMIN3_R[25], RADMIN3_R[26], RADMIN3_R[27], + RADMIN3_R[28], RADMIN3_R[29], RADMIN3_R[30], RADMIN3_R[31], + RADMIN3_R[32], RADMIN3_R[33], RADMIN3_R[34], RADMIN3_R[35], + RADMIN3_R[36], RADMIN3_R[37], RADMIN3_R[38], RADMIN3_R[39], + RADMIN3_R[40], RADMIN3_R[41], RADMIN3_R[42], RADMIN3_R[43], + RADMIN3_R[44], RADMIN3_R[45], RADMIN3_R[46], RADMIN3_R[47], + RADMIN3_R[48], RADMIN3_R[49], RADMIN3_R[50], RADMIN3_R[51], + RADMIN3_R[52], RADMIN3_R[53], RADMIN3_R[54], RADMIN3_R[55], + RADMIN3_R[56], RADMIN3_R[57], RADMIN3_R[58], RADMIN3_R[59], + RADMIN3_R[60], RADMIN3_R[61], RADMIN3_R[62], RADMIN3_R[63], }; @@ -264,29 +304,7 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) * modifier */ - const u64 lid = get_local_id (0); const u64 gid = get_global_id (0); - const u64 lsz = get_local_size (0); - - - /** - * cache constant values to shared memory - */ - - LOCAL_VK u32 m[64]; - LOCAL_VK u32 r[64]; - LOCAL_VK u32 fact[64]; - - for (u32 i = lid; i < 64; i += lsz) - { - m[i] = RADMIN3_M[i]; - r[i] = RADMIN3_R[i]; - fact[i] = RADMIN3_FACT[i]; - } - - SYNC_THREADS (); - - if (gid >= GID_CNT) return; /** @@ -333,6 +351,62 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) w[idx] = pws[gid].i[idx]; } + PRIVATE_AS const u32 m[128] = + { + RADMIN3_M[ 0], RADMIN3_M[ 1], RADMIN3_M[ 2], RADMIN3_M[ 3], + RADMIN3_M[ 4], RADMIN3_M[ 5], RADMIN3_M[ 6], RADMIN3_M[ 7], + RADMIN3_M[ 8], RADMIN3_M[ 9], RADMIN3_M[ 10], RADMIN3_M[ 11], + RADMIN3_M[ 12], RADMIN3_M[ 13], RADMIN3_M[ 14], RADMIN3_M[ 15], + RADMIN3_M[ 16], RADMIN3_M[ 17], RADMIN3_M[ 18], RADMIN3_M[ 19], + RADMIN3_M[ 20], RADMIN3_M[ 21], RADMIN3_M[ 22], RADMIN3_M[ 23], + RADMIN3_M[ 24], RADMIN3_M[ 25], RADMIN3_M[ 26], RADMIN3_M[ 27], + RADMIN3_M[ 28], RADMIN3_M[ 29], RADMIN3_M[ 30], RADMIN3_M[ 31], + RADMIN3_M[ 32], RADMIN3_M[ 33], RADMIN3_M[ 34], RADMIN3_M[ 35], + RADMIN3_M[ 36], RADMIN3_M[ 37], RADMIN3_M[ 38], RADMIN3_M[ 39], + RADMIN3_M[ 40], RADMIN3_M[ 41], RADMIN3_M[ 42], RADMIN3_M[ 43], + RADMIN3_M[ 44], RADMIN3_M[ 45], RADMIN3_M[ 46], RADMIN3_M[ 47], + RADMIN3_M[ 48], RADMIN3_M[ 49], RADMIN3_M[ 50], RADMIN3_M[ 51], + RADMIN3_M[ 52], RADMIN3_M[ 53], RADMIN3_M[ 54], RADMIN3_M[ 55], + RADMIN3_M[ 56], RADMIN3_M[ 57], RADMIN3_M[ 58], RADMIN3_M[ 59], + RADMIN3_M[ 60], RADMIN3_M[ 61], RADMIN3_M[ 62], RADMIN3_M[ 63], + RADMIN3_M[ 64], RADMIN3_M[ 65], RADMIN3_M[ 66], RADMIN3_M[ 67], + RADMIN3_M[ 68], RADMIN3_M[ 69], RADMIN3_M[ 70], RADMIN3_M[ 71], + RADMIN3_M[ 72], RADMIN3_M[ 73], RADMIN3_M[ 74], RADMIN3_M[ 75], + RADMIN3_M[ 76], RADMIN3_M[ 77], RADMIN3_M[ 78], RADMIN3_M[ 79], + RADMIN3_M[ 80], RADMIN3_M[ 81], RADMIN3_M[ 82], RADMIN3_M[ 83], + RADMIN3_M[ 84], RADMIN3_M[ 85], RADMIN3_M[ 86], RADMIN3_M[ 87], + RADMIN3_M[ 88], RADMIN3_M[ 89], RADMIN3_M[ 90], RADMIN3_M[ 91], + RADMIN3_M[ 92], RADMIN3_M[ 93], RADMIN3_M[ 94], RADMIN3_M[ 95], + RADMIN3_M[ 96], RADMIN3_M[ 97], RADMIN3_M[ 98], RADMIN3_M[ 99], + RADMIN3_M[100], RADMIN3_M[101], RADMIN3_M[102], RADMIN3_M[103], + RADMIN3_M[104], RADMIN3_M[105], RADMIN3_M[106], RADMIN3_M[107], + RADMIN3_M[108], RADMIN3_M[109], RADMIN3_M[110], RADMIN3_M[111], + RADMIN3_M[112], RADMIN3_M[113], RADMIN3_M[114], RADMIN3_M[115], + RADMIN3_M[116], RADMIN3_M[117], RADMIN3_M[118], RADMIN3_M[119], + RADMIN3_M[120], RADMIN3_M[121], RADMIN3_M[122], RADMIN3_M[123], + RADMIN3_M[124], RADMIN3_M[125], RADMIN3_M[126], RADMIN3_M[127], + }; + + PRIVATE_AS const u32 fact[64] = + { + RADMIN3_FACT[ 0], RADMIN3_FACT[ 1], RADMIN3_FACT[ 2], RADMIN3_FACT[ 3], + RADMIN3_FACT[ 4], RADMIN3_FACT[ 5], RADMIN3_FACT[ 6], RADMIN3_FACT[ 7], + RADMIN3_FACT[ 8], RADMIN3_FACT[ 9], RADMIN3_FACT[10], RADMIN3_FACT[11], + RADMIN3_FACT[12], RADMIN3_FACT[13], RADMIN3_FACT[14], RADMIN3_FACT[15], + RADMIN3_FACT[16], RADMIN3_FACT[17], RADMIN3_FACT[18], RADMIN3_FACT[19], + RADMIN3_FACT[20], RADMIN3_FACT[21], RADMIN3_FACT[22], RADMIN3_FACT[23], + RADMIN3_FACT[24], RADMIN3_FACT[25], RADMIN3_FACT[26], RADMIN3_FACT[27], + RADMIN3_FACT[28], RADMIN3_FACT[29], RADMIN3_FACT[30], RADMIN3_FACT[31], + RADMIN3_FACT[32], RADMIN3_FACT[33], RADMIN3_FACT[34], RADMIN3_FACT[35], + RADMIN3_FACT[36], RADMIN3_FACT[37], RADMIN3_FACT[38], RADMIN3_FACT[39], + RADMIN3_FACT[40], RADMIN3_FACT[41], RADMIN3_FACT[42], RADMIN3_FACT[43], + RADMIN3_FACT[44], RADMIN3_FACT[45], RADMIN3_FACT[46], RADMIN3_FACT[47], + RADMIN3_FACT[48], RADMIN3_FACT[49], RADMIN3_FACT[50], RADMIN3_FACT[51], + RADMIN3_FACT[52], RADMIN3_FACT[53], RADMIN3_FACT[54], RADMIN3_FACT[55], + RADMIN3_FACT[56], RADMIN3_FACT[57], RADMIN3_FACT[58], RADMIN3_FACT[59], + RADMIN3_FACT[60], RADMIN3_FACT[61], RADMIN3_FACT[62], RADMIN3_FACT[63], + }; + /** * loop @@ -381,18 +455,24 @@ KERNEL_FQ void m29200_sxx (KERN_ATTR_VECTOR_ESALT (radmin3_t)) const u32 e[5] = { c1.h[4], c1.h[3], c1.h[2], c1.h[1], c1.h[0] }; - // u32 r_t[64]; for (u32 i = 0; i < 64; i++) r_t[i] = r[i]; - u32 r_t[64] = { - r[ 0], r[ 1], r[ 2], r[ 3], r[ 4], r[ 5], r[ 6], r[ 7], - r[ 8], r[ 9], r[10], r[11], r[12], r[13], r[14], r[15], - r[16], r[17], r[18], r[19], r[20], r[21], r[22], r[23], - r[24], r[25], r[26], r[27], r[28], r[29], r[30], r[31], - r[32], r[33], r[34], r[35], r[36], r[37], r[38], r[39], - r[40], r[41], r[42], r[43], r[44], r[45], r[46], r[47], - r[48], r[49], r[50], r[51], r[52], r[53], r[54], r[55], - r[56], r[57], r[58], r[59], r[60], r[61], r[62], r[63], + RADMIN3_R[ 0], RADMIN3_R[ 1], RADMIN3_R[ 2], RADMIN3_R[ 3], + RADMIN3_R[ 4], RADMIN3_R[ 5], RADMIN3_R[ 6], RADMIN3_R[ 7], + RADMIN3_R[ 8], RADMIN3_R[ 9], RADMIN3_R[10], RADMIN3_R[11], + RADMIN3_R[12], RADMIN3_R[13], RADMIN3_R[14], RADMIN3_R[15], + RADMIN3_R[16], RADMIN3_R[17], RADMIN3_R[18], RADMIN3_R[19], + RADMIN3_R[20], RADMIN3_R[21], RADMIN3_R[22], RADMIN3_R[23], + RADMIN3_R[24], RADMIN3_R[25], RADMIN3_R[26], RADMIN3_R[27], + RADMIN3_R[28], RADMIN3_R[29], RADMIN3_R[30], RADMIN3_R[31], + RADMIN3_R[32], RADMIN3_R[33], RADMIN3_R[34], RADMIN3_R[35], + RADMIN3_R[36], RADMIN3_R[37], RADMIN3_R[38], RADMIN3_R[39], + RADMIN3_R[40], RADMIN3_R[41], RADMIN3_R[42], RADMIN3_R[43], + RADMIN3_R[44], RADMIN3_R[45], RADMIN3_R[46], RADMIN3_R[47], + RADMIN3_R[48], RADMIN3_R[49], RADMIN3_R[50], RADMIN3_R[51], + RADMIN3_R[52], RADMIN3_R[53], RADMIN3_R[54], RADMIN3_R[55], + RADMIN3_R[56], RADMIN3_R[57], RADMIN3_R[58], RADMIN3_R[59], + RADMIN3_R[60], RADMIN3_R[61], RADMIN3_R[62], RADMIN3_R[63], };