Possible unnecessary __syncthreads using for kernel function cryptonight_core_gpu_phase1 in src/nvidia/cuda_core.cu 
Hello there!

 I am currently learning xmrig source code and may find some unnecessary use of __syncthreads() for some kernel funcitons in src/nvidia/cuda_core.cu.
For kernel function cryptonight_core_gpu_phase1,

```
template<size_t ITERATIONS, uint32_t MEM> 
__global__ void cryptonight_core_gpu_phase1( int threads, int bfactor, int partidx, uint32_t * __restrict__ long_state, uint32_t * __restrict__ ctx_state2, uint32_t * __restrict__ ctx_key1 )
{
    __shared__ uint32_t sharedMemory[1024];

    cn_aes_gpu_init( sharedMemory );
    __syncthreads( );

    const int thread = ( blockDim.x * blockIdx.x + threadIdx.x ) >> 3;
    const int sub = ( threadIdx.x & 7 ) << 2;

    const int batchsize = MEM >> bfactor;
    const int start = partidx * batchsize;
    const int end = start + batchsize;

    if ( thread >= threads )
        return;

    uint32_t key[40], text[4];

    MEMCPY8( key, ctx_key1 + thread * 40, 20 );

    if (partidx == 0) {
        // first round
        MEMCPY8( text, ctx_state2 + thread * 50 + sub + 16, 2 );
    }
    else {
        // load previous text data
        MEMCPY8( text, &long_state[( (uint64_t) thread * MEM) + sub + start - 32], 2 );
    }

    __syncthreads( );
    for (int i = start; i < end; i += 32) {
        cn_aes_pseudo_round_mut( sharedMemory, text, key );
        MEMCPY8(&long_state[((uint64_t) thread * MEM) + (sub + i)], text, 2);
    }
}
```

In line 146, after calling for function cn_aes_gpu_init(), cryptonight_core_gpu_phase1 calls __syncthreads(), but what confuses me is that the correlated variable sharedMemory is never used during the calling chain.  There should be unnecessary to synchronize threads here?
Thanks very much! :)