static cl_int queue_scrypt_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_unused cl_uint threads) { unsigned char *midstate = blk->work->midstate; cl_kernel *kernel = &clState->kernel; unsigned int num = 0; cl_uint le_target; cl_int status = 0; uint32_t timestamp; cl_uint nfactor = 10; // scrypt default //if (opt_scrypt_vert) { timestamp = bswap_32(*((uint32_t *)(blk->work->data + 17*4))); nfactor = vert_GetNfactor(timestamp) + 1; //} le_target = *(cl_uint *)(blk->work->device_target + 28); clState->cldata = blk->work->data; applog(LOG_DEBUG, "Timestamp: %d, Nfactor: %d, Target: %x", timestamp, nfactor, le_target); status = clEnqueueWriteBuffer(clState->commandQueue, clState->CLbuffer0, true, 0, 80, clState->cldata, 0, NULL,NULL); CL_SET_ARG(clState->CLbuffer0); CL_SET_ARG(clState->outputBuffer); CL_SET_ARG(clState->padbuffer8); CL_SET_VARG(4, &midstate[0]); CL_SET_VARG(4, &midstate[16]); CL_SET_ARG(le_target); CL_SET_ARG(nfactor); return status; }
static cl_int queue_diakgcn_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_unused cl_uint threads) { cl_kernel *kernel = &clState->kernel; unsigned int num = 0; cl_int status = 0; if (!clState->goffset) { cl_uint vwidth = clState->vwidth; uint *nonces = alloca(sizeof(uint) * vwidth); unsigned int i; for (i = 0; i < vwidth; i++) nonces[i] = blk->nonce + i; CL_SET_VARG(vwidth, nonces); } CL_SET_BLKARG(PreVal0); CL_SET_BLKARG(PreVal4_2); CL_SET_BLKARG(cty_h); CL_SET_BLKARG(D1A); CL_SET_BLKARG(cty_b); CL_SET_BLKARG(cty_c); CL_SET_BLKARG(cty_f); CL_SET_BLKARG(cty_g); CL_SET_BLKARG(C1addK5); CL_SET_BLKARG(B1addK6); CL_SET_BLKARG(PreVal0addK7); CL_SET_BLKARG(W16addK16); CL_SET_BLKARG(W17addK17); CL_SET_BLKARG(PreW18); CL_SET_BLKARG(PreW19); CL_SET_BLKARG(W16); CL_SET_BLKARG(W17); CL_SET_BLKARG(PreW31); CL_SET_BLKARG(PreW32); CL_SET_BLKARG(ctx_a); CL_SET_BLKARG(ctx_b); CL_SET_BLKARG(ctx_c); CL_SET_BLKARG(ctx_d); CL_SET_BLKARG(ctx_e); CL_SET_BLKARG(ctx_f); CL_SET_BLKARG(ctx_g); CL_SET_BLKARG(ctx_h); CL_SET_BLKARG(zeroA); CL_SET_BLKARG(zeroB); CL_SET_BLKARG(oneA); CL_SET_BLKARG(twoA); CL_SET_BLKARG(threeA); CL_SET_BLKARG(fourA); CL_SET_BLKARG(fiveA); CL_SET_BLKARG(sixA); CL_SET_BLKARG(sevenA); CL_SET_ARG(clState->outputBuffer); return status; }
static cl_int queue_scrypt_kernel(struct __clState *clState, struct _dev_blk_ctx *blk, __maybe_unused cl_uint threads) { unsigned char *midstate = blk->work->midstate; cl_kernel *kernel = &clState->kernel; unsigned int num = 0; cl_uint le_target; cl_int status = 0; le_target = *(cl_uint *)(blk->work->device_target + 28); memcpy(clState->cldata, blk->work->data, 80); status = clEnqueueWriteBuffer(clState->commandQueue, clState->CLbuffer0, true, 0, 80, clState->cldata, 0, NULL, NULL); CL_SET_ARG(clState->CLbuffer0); CL_SET_ARG(clState->outputBuffer); CL_SET_ARG(clState->padbuffer8); CL_SET_VARG(4, &midstate[0]); CL_SET_VARG(4, &midstate[16]); CL_SET_ARG(le_target); return status; }
static cl_int queue_poclbm_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint threads) { cl_kernel *kernel = &clState->kernel; unsigned int num = 0; cl_int status = 0; CL_SET_BLKARG(ctx_a); CL_SET_BLKARG(ctx_b); CL_SET_BLKARG(ctx_c); CL_SET_BLKARG(ctx_d); CL_SET_BLKARG(ctx_e); CL_SET_BLKARG(ctx_f); CL_SET_BLKARG(ctx_g); CL_SET_BLKARG(ctx_h); CL_SET_BLKARG(cty_b); CL_SET_BLKARG(cty_c); CL_SET_BLKARG(cty_f); CL_SET_BLKARG(cty_g); CL_SET_BLKARG(cty_h); if (!clState->goffset) { cl_uint vwidth = clState->vwidth; uint *nonces = alloca(sizeof(uint) * vwidth); unsigned int i; for (i = 0; i < vwidth; i++) nonces[i] = blk->nonce + (i * threads); CL_SET_VARG(vwidth, nonces); } CL_SET_BLKARG(fW0); CL_SET_BLKARG(fW1); CL_SET_BLKARG(fW2); CL_SET_BLKARG(fW3); CL_SET_BLKARG(fW15); CL_SET_BLKARG(fW01r); CL_SET_BLKARG(D1A); CL_SET_BLKARG(C1addK5); CL_SET_BLKARG(B1addK6); CL_SET_BLKARG(W16addK16); CL_SET_BLKARG(W17addK17); CL_SET_BLKARG(PreVal4addT1); CL_SET_BLKARG(PreVal0); CL_SET_ARG(clState->outputBuffer); return status; }
static cl_int queue_phatk_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_unused cl_uint threads) { cl_kernel *kernel = &clState->kernel; cl_uint vwidth = clState->vwidth; unsigned int i, num = 0; cl_int status = 0; uint *nonces; CL_SET_BLKARG(ctx_a); CL_SET_BLKARG(ctx_b); CL_SET_BLKARG(ctx_c); CL_SET_BLKARG(ctx_d); CL_SET_BLKARG(ctx_e); CL_SET_BLKARG(ctx_f); CL_SET_BLKARG(ctx_g); CL_SET_BLKARG(ctx_h); CL_SET_BLKARG(cty_b); CL_SET_BLKARG(cty_c); CL_SET_BLKARG(cty_d); CL_SET_BLKARG(cty_f); CL_SET_BLKARG(cty_g); CL_SET_BLKARG(cty_h); nonces = alloca(sizeof(uint) * vwidth); for (i = 0; i < vwidth; i++) nonces[i] = blk->nonce + i; CL_SET_VARG(vwidth, nonces); CL_SET_BLKARG(W16); CL_SET_BLKARG(W17); CL_SET_BLKARG(PreVal4_2); CL_SET_BLKARG(PreVal0); CL_SET_BLKARG(PreW18); CL_SET_BLKARG(PreW19); CL_SET_BLKARG(PreW31); CL_SET_BLKARG(PreW32); CL_SET_ARG(clState->outputBuffer); return status; }