diff --git a/xmrstak/backend/amd/amd_gpu/opencl/cryptonight_gpu.cl b/xmrstak/backend/amd/amd_gpu/opencl/cryptonight_gpu.cl
index a99243e4402724057780df88ae64a98cf097933f..0bf4f6e387cb0a226e520b669c0837e0bcd105f4 100644
--- a/xmrstak/backend/amd/amd_gpu/opencl/cryptonight_gpu.cl
+++ b/xmrstak/backend/amd/amd_gpu/opencl/cryptonight_gpu.cl
@@ -201,7 +201,7 @@ __kernel void JOIN(cn1_cn_gpu,ALGO)(__global int *lpad_in, __global int *spad, u
 	const uint gIdx = getIdx();
 
 #if(COMP_MODE==1)
-	if(gIdx < Threads)
+	if(gIdx/16 >= numThreads)
 		return;
 #endif
 
@@ -368,16 +368,11 @@ __kernel void JOIN(cn0_cn_gpu,ALGO)(__global ulong *input, __global int *Scratch
 
 	barrier(CLK_LOCAL_MEM_FENCE);
 
-#if(COMP_MODE==1)
-    // do not use early return here
-	if(gIdx < Threads)
-#endif
+	for(ulong i = get_local_id(1); i < MEMORY / 512; i += get_local_size(1))
 	{
-		for(ulong i = get_local_id(1); i < MEMORY / 512; i += get_local_size(1))
-		{
-			generate_512(i, State, (__global ulong*)((__global uchar*)Scratchpad + i*512));
-		}
+		generate_512(i, State, (__global ulong*)((__global uchar*)Scratchpad + i*512));
 	}
+
 }
 
 )==="