summaryrefslogtreecommitdiffstats
path: root/xmrstak/backend
diff options
context:
space:
mode:
authorpsychocrypt <psychocryptHPC@gmail.com>2018-01-24 22:08:48 +0100
committerpsychocrypt <psychocryptHPC@gmail.com>2018-01-24 22:11:47 +0100
commitac474caa8b9392881736ddaae349d4cb649683a9 (patch)
tree21e916b1ecf92ce045c670c4c9ae6cfa4f599146 /xmrstak/backend
parentb9fb744a104cc8eceb9196a676bea2c4f0e14d51 (diff)
downloadxmr-stak-ac474caa8b9392881736ddaae349d4cb649683a9.zip
xmr-stak-ac474caa8b9392881736ddaae349d4cb649683a9.tar.gz
remove usage of `rotate`
revert the change that the OpenCl function `rotate` is used instead of `SKEIN_ROT`
Diffstat (limited to 'xmrstak/backend')
-rw-r--r--xmrstak/backend/amd/amd_gpu/opencl/wolf-skein.cl11
1 files changed, 10 insertions, 1 deletions
diff --git a/xmrstak/backend/amd/amd_gpu/opencl/wolf-skein.cl b/xmrstak/backend/amd/amd_gpu/opencl/wolf-skein.cl
index e2a867d..279b652 100644
--- a/xmrstak/backend/amd/amd_gpu/opencl/wolf-skein.cl
+++ b/xmrstak/backend/amd/amd_gpu/opencl/wolf-skein.cl
@@ -30,10 +30,19 @@ static const __constant ulong SKEIN512_256_IV[8] =
p.s7 += q; \
} while(0)
+ulong SKEIN_ROT(const uint2 x, const uint y)
+{
+ if(y < 32) return(as_ulong(amd_bitalign(x, x.s10, 32 - y)));
+ else return(as_ulong(amd_bitalign(x.s10, x, 32 - (y - 32))));
+}
+
void SkeinMix8(ulong4 *pv0, ulong4 *pv1, const ulong4 rc)
{
*pv0 += *pv1;
- *pv1 = rotate(*pv1, (ulong4)rc);
+ (*pv1).s0 = SKEIN_ROT(as_uint2((*pv1).s0), rc.s0);
+ (*pv1).s1 = SKEIN_ROT(as_uint2((*pv1).s1), rc.s1);
+ (*pv1).s2 = SKEIN_ROT(as_uint2((*pv1).s2), rc.s2);
+ (*pv1).s3 = SKEIN_ROT(as_uint2((*pv1).s3), rc.s3);
*pv1 ^= *pv0;
}
OpenPOWER on IntegriCloud