1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-12-22 22:58:30 +00:00

radmin3: fix private/local type problem

This commit is contained in:
philsmd 2022-06-04 11:51:35 +02:00
parent ab8cc31b2d
commit f80eb1ee13
No known key found for this signature in database
GPG Key ID: 4F25D016D9D6A8AF
3 changed files with 432 additions and 192 deletions

View File

@ -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],
};

View File

@ -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],
};

View File

@ -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],
};