This commit is contained in:
Jay D Dee
2019-06-26 14:16:01 -04:00
parent d6e8d7a46e
commit 0d48d573ce
174 changed files with 1352 additions and 1556 deletions

View File

@@ -564,17 +564,17 @@ void sonoa_hash( void *state, const void *input )
memcpy(state, hash, 32);
}
int scanhash_sonoa( int thr_id, struct work *work, uint32_t max_nonce,
int scanhash_sonoa( struct work *work, uint32_t max_nonce,
uint64_t *hashes_done, struct thr_info *mythr )
{
uint32_t _ALIGN(128) hash32[8];
uint32_t _ALIGN(128) endiandata[20];
uint32_t *pdata = work->data;
uint32_t *ptarget = work->target;
const uint32_t first_nonce = pdata[19];
const uint32_t Htarg = ptarget[7];
uint32_t n = pdata[19] - 1;
/* int */ thr_id = mythr->id; // thr_id arg is deprecated
uint32_t _ALIGN(128) hash32[8];
uint32_t _ALIGN(128) endiandata[20];
uint32_t *pdata = work->data;
uint32_t *ptarget = work->target;
const uint32_t first_nonce = pdata[19];
const uint32_t Htarg = ptarget[7];
uint32_t n = pdata[19] - 1;
int thr_id = mythr->id; // thr_id arg is deprecated
uint64_t htmax[] =
{
@@ -603,45 +603,20 @@ uint32_t n = pdata[19] - 1;
casti_m128i( endiandata, 3 ) = mm128_bswap_32( casti_m128i( pdata, 3 ) );
casti_m128i( endiandata, 4 ) = mm128_bswap_32( casti_m128i( pdata, 4 ) );
#ifdef DEBUG_ALGO
printf("[%d] Htarg=%X\n", thr_id, Htarg);
#endif
for ( int m = 0; m < 6; m++ )
for ( int m = 0; m < 6; m++ ) if ( Htarg <= htmax[m] )
{
if ( Htarg <= htmax[m] )
{
uint32_t mask = masks[m];
do
{
pdata[19] = ++n;
be32enc(&endiandata[19], n);
sonoa_hash(hash32, endiandata);
#ifndef DEBUG_ALGO
if ( ( !( hash32[7] & mask ) ) && fulltest( hash32, ptarget ) )
{
work_set_target_ratio( work, hash32 );
*hashes_done = n - first_nonce + 1;
return 1;
}
#else
if (!(n % 0x1000) && !thr_id) printf(".");
if ( !(hash32[7] & mask) )
{
printf("[%d]",thr_id);
if ( fulltest( hash32, ptarget ) )
{
work_set_target_ratio( work, hash32 );
*hashes_done = n - first_nonce + 1;
return 1;
}
}
#endif
uint32_t mask = masks[m];
do
{
pdata[19] = ++n;
be32enc(&endiandata[19], n);
sonoa_hash(hash32, endiandata);
if ( !( hash32[7] & mask ) )
if ( fulltest( hash32, ptarget ) && !opt_benchmark )
submit_solution( work, hash32, mythr );
} while (n < max_nonce && !work_restart[thr_id].restart);
// see blake.c if else to understand the loop on htmax => mask
break;
break;
}
}
*hashes_done = n - first_nonce + 1;
pdata[19] = n;
return 0;