mirror of
https://github.com/JayDDee/cpuminer-opt.git
synced 2025-09-17 23:44:27 +00:00
v3.23.4
This commit is contained in:
@@ -8,10 +8,10 @@
|
||||
|
||||
void keccakhash_8way(void *state, const void *input)
|
||||
{
|
||||
keccak256_8way_context ctx;
|
||||
keccak256_8way_init( &ctx );
|
||||
keccak256_8way_update( &ctx, input, 80 );
|
||||
keccak256_8way_close( &ctx, state );
|
||||
keccak256_8x64_context ctx;
|
||||
keccak256_8x64_init( &ctx );
|
||||
keccak256_8x64_update( &ctx, input, 80 );
|
||||
keccak256_8x64_close( &ctx, state );
|
||||
}
|
||||
|
||||
int scanhash_keccak_8way( struct work *work, uint32_t max_nonce,
|
||||
@@ -61,10 +61,10 @@ int scanhash_keccak_8way( struct work *work, uint32_t max_nonce,
|
||||
|
||||
void keccakhash_4way(void *state, const void *input)
|
||||
{
|
||||
keccak256_4way_context ctx;
|
||||
keccak256_4way_init( &ctx );
|
||||
keccak256_4way_update( &ctx, input, 80 );
|
||||
keccak256_4way_close( &ctx, state );
|
||||
keccak256_4x64_context ctx;
|
||||
keccak256_4x64_init( &ctx );
|
||||
keccak256_4x64_update( &ctx, input, 80 );
|
||||
keccak256_4x64_close( &ctx, state );
|
||||
}
|
||||
|
||||
int scanhash_keccak_4way( struct work *work, uint32_t max_nonce,
|
||||
|
||||
@@ -207,30 +207,30 @@ void keccak256_8way_init( void *kc )
|
||||
}
|
||||
|
||||
void
|
||||
keccak256_8way_update(void *cc, const void *data, size_t len)
|
||||
keccak256_8x64_update(void *cc, const void *data, size_t len)
|
||||
{
|
||||
keccak64_8way_core(cc, data, len, 136);
|
||||
}
|
||||
|
||||
void
|
||||
keccak256_8way_close(void *cc, void *dst)
|
||||
keccak256_8x64_close(void *cc, void *dst)
|
||||
{
|
||||
keccak64_8way_close(cc, dst, 32, 136);
|
||||
}
|
||||
|
||||
void keccak512_8way_init( void *kc )
|
||||
void keccak512_8x64_init( void *kc )
|
||||
{
|
||||
keccak64_8way_init( kc, 512 );
|
||||
}
|
||||
|
||||
void
|
||||
keccak512_8way_update(void *cc, const void *data, size_t len)
|
||||
keccak512_8x64_update(void *cc, const void *data, size_t len)
|
||||
{
|
||||
keccak64_8way_core(cc, data, len, 72);
|
||||
}
|
||||
|
||||
void
|
||||
keccak512_8way_close(void *cc, void *dst)
|
||||
keccak512_8x64_close(void *cc, void *dst)
|
||||
{
|
||||
keccak64_8way_close(cc, dst, 64, 72);
|
||||
}
|
||||
@@ -395,24 +395,24 @@ void keccak256_4way_init( void *kc )
|
||||
}
|
||||
|
||||
void
|
||||
keccak256_4way_update(void *cc, const void *data, size_t len)
|
||||
keccak256_4x64_update(void *cc, const void *data, size_t len)
|
||||
{
|
||||
keccak64_core(cc, data, len, 136);
|
||||
}
|
||||
|
||||
void
|
||||
keccak256_4way_close(void *cc, void *dst)
|
||||
keccak256_4x64_close(void *cc, void *dst)
|
||||
{
|
||||
keccak64_close(cc, dst, 32, 136);
|
||||
}
|
||||
|
||||
void keccak512_4way_init( void *kc )
|
||||
void keccak512_4x64_init( void *kc )
|
||||
{
|
||||
keccak64_init( kc, 512 );
|
||||
}
|
||||
|
||||
void
|
||||
keccak512_4way_update(void *cc, const void *data, size_t len)
|
||||
keccak512_4x64_update(void *cc, const void *data, size_t len)
|
||||
{
|
||||
keccak64_core(cc, data, len, 72);
|
||||
}
|
||||
|
||||
@@ -1,64 +1,94 @@
|
||||
#ifndef KECCAK_HASH_4WAY_H__
|
||||
#define KECCAK_HASH_4WAY_H__
|
||||
|
||||
#ifdef __AVX2__
|
||||
|
||||
#include <stddef.h>
|
||||
#include "simd-utils.h"
|
||||
|
||||
/**
|
||||
* This structure is a context for Keccak computations: it contains the
|
||||
* intermediate values and some data from the last entered block. Once a
|
||||
* Keccak computation has been performed, the context can be reused for
|
||||
* another computation.
|
||||
*
|
||||
* The contents of this structure are private. A running Keccak computation
|
||||
* can be cloned by copying the context (e.g. with a simple
|
||||
* <code>memcpy()</code>).
|
||||
*/
|
||||
|
||||
#if defined(__AVX512F__) && defined(__AVX512VL__) && defined(__AVX512DQ__) && defined(__AVX512BW__)
|
||||
|
||||
typedef struct {
|
||||
__m512i buf[144*8];
|
||||
__m512i w[25];
|
||||
size_t ptr, lim;
|
||||
typedef struct
|
||||
{
|
||||
__m512i buf[144*8];
|
||||
__m512i w[25];
|
||||
size_t ptr, lim;
|
||||
} keccak64_ctx_m512i __attribute__((aligned(128)));
|
||||
|
||||
typedef keccak64_ctx_m512i keccak256_8way_context;
|
||||
typedef keccak64_ctx_m512i keccak512_8way_context;
|
||||
typedef keccak64_ctx_m512i keccak256_8x64_context;
|
||||
typedef keccak64_ctx_m512i keccak512_8x64_context;
|
||||
|
||||
void keccak256_8way_init(void *cc);
|
||||
void keccak256_8way_update(void *cc, const void *data, size_t len);
|
||||
void keccak256_8way_close(void *cc, void *dst);
|
||||
void keccak256_8x64_init(void *cc);
|
||||
void keccak256_8x64_update(void *cc, const void *data, size_t len);
|
||||
void keccak256_8x64_close(void *cc, void *dst);
|
||||
|
||||
void keccak512_8way_init(void *cc);
|
||||
void keccak512_8way_update(void *cc, const void *data, size_t len);
|
||||
void keccak512_8way_close(void *cc, void *dst);
|
||||
void keccak512_8way_addbits_and_close(
|
||||
void *cc, unsigned ub, unsigned n, void *dst);
|
||||
void keccak512_8x64_init(void *cc);
|
||||
void keccak512_8x64_update(void *cc, const void *data, size_t len);
|
||||
void keccak512_8x64_close(void *cc, void *dst);
|
||||
|
||||
// legacy naming
|
||||
#define keccak512_8way_context keccak512_8x64_context
|
||||
#define keccak512_8way_init keccak512_8x64_init
|
||||
#define keccak512_8way_update keccak512_8x64_update
|
||||
#define keccak512_8way_close keccak512_8x64_close
|
||||
#define keccak256_8way_context keccak256_8x64_context
|
||||
#define keccak256_8way_init keccak256_8x64_init
|
||||
#define keccak256_8way_update keccak256_8x64_update
|
||||
#define keccak256_8way_close keccak256_8x64_close
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
__m256i buf[144*8];
|
||||
__m256i w[25];
|
||||
size_t ptr, lim;
|
||||
#if defined(__AVX2__)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
__m256i buf[144*8];
|
||||
__m256i w[25];
|
||||
size_t ptr, lim;
|
||||
} keccak64_ctx_m256i __attribute__((aligned(128)));
|
||||
|
||||
typedef keccak64_ctx_m256i keccak256_4way_context;
|
||||
typedef keccak64_ctx_m256i keccak512_4way_context;
|
||||
typedef keccak64_ctx_m256i keccak256_4x64_context;
|
||||
typedef keccak64_ctx_m256i keccak512_4x64_context;
|
||||
|
||||
void keccak256_4way_init(void *cc);
|
||||
void keccak256_4way_update(void *cc, const void *data, size_t len);
|
||||
void keccak256_4way_close(void *cc, void *dst);
|
||||
void keccak256_4x64_init(void *cc);
|
||||
void keccak256_4x64_update(void *cc, const void *data, size_t len);
|
||||
void keccak256_4x64_close(void *cc, void *dst);
|
||||
|
||||
void keccak512_4way_init(void *cc);
|
||||
void keccak512_4way_update(void *cc, const void *data, size_t len);
|
||||
void keccak512_4way_close(void *cc, void *dst);
|
||||
void keccak512_4way_addbits_and_close(
|
||||
void *cc, unsigned ub, unsigned n, void *dst);
|
||||
void keccak512_4x64_init(void *cc);
|
||||
void keccak512_4x64_update(void *cc, const void *data, size_t len);
|
||||
void keccak512_4x64_close(void *cc, void *dst);
|
||||
|
||||
// legacy naming
|
||||
#define keccak512_4way_context keccak512_4x64_context
|
||||
#define keccak512_4way_init keccak512_4x64_init
|
||||
#define keccak512_4way_update keccak512_4x64_update
|
||||
#define keccak512_4way_close keccak512_4x64_close
|
||||
#define keccak256_4way_context keccak256_4x64_context
|
||||
#define keccak256_4way_init keccak256_4x64_init
|
||||
#define keccak256_4way_update keccak256_4x64_update
|
||||
#define keccak256_4way_close keccak256_4x64_close
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__SSE2__) || defined(__ARM_NEON)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
v128_t buf[144*4];
|
||||
v128_t w[50];
|
||||
size_t ptr, lim;
|
||||
} keccak32_ctx_v128 __attribute__((aligned(64)));
|
||||
|
||||
typedef keccak32_ctx_v128 keccak256_4x32_context;
|
||||
typedef keccak32_ctx_v128 keccak512_4x32_context;
|
||||
|
||||
void keccak256_4x32_init(void *cc);
|
||||
void keccak256_4x32_update(void *cc, const void *data, size_t len);
|
||||
void keccak256_4x32_close(void *cc, void *dst);
|
||||
|
||||
void keccak512_4x32_init(void *cc);
|
||||
void keccak512_4x32_update(void *cc, const void *data, size_t len);
|
||||
void keccak512_4x32_close(void *cc, void *dst);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -11,13 +11,13 @@ void sha3d_hash_8way(void *state, const void *input)
|
||||
uint32_t buffer[16*8] __attribute__ ((aligned (128)));
|
||||
keccak256_8way_context ctx;
|
||||
|
||||
keccak256_8way_init( &ctx );
|
||||
keccak256_8way_update( &ctx, input, 80 );
|
||||
keccak256_8way_close( &ctx, buffer );
|
||||
keccak256_8x64_init( &ctx );
|
||||
keccak256_8x64_update( &ctx, input, 80 );
|
||||
keccak256_8x64_close( &ctx, buffer );
|
||||
|
||||
keccak256_8way_init( &ctx );
|
||||
keccak256_8way_update( &ctx, buffer, 32 );
|
||||
keccak256_8way_close( &ctx, state );
|
||||
keccak256_8x64_init( &ctx );
|
||||
keccak256_8x64_update( &ctx, buffer, 32 );
|
||||
keccak256_8x64_close( &ctx, state );
|
||||
}
|
||||
|
||||
int scanhash_sha3d_8way( struct work *work, uint32_t max_nonce,
|
||||
@@ -71,13 +71,13 @@ void sha3d_hash_4way(void *state, const void *input)
|
||||
uint32_t buffer[16*4] __attribute__ ((aligned (64)));
|
||||
keccak256_4way_context ctx;
|
||||
|
||||
keccak256_4way_init( &ctx );
|
||||
keccak256_4way_update( &ctx, input, 80 );
|
||||
keccak256_4way_close( &ctx, buffer );
|
||||
keccak256_4x64_init( &ctx );
|
||||
keccak256_4x64_update( &ctx, input, 80 );
|
||||
keccak256_4x64_close( &ctx, buffer );
|
||||
|
||||
keccak256_4way_init( &ctx );
|
||||
keccak256_4way_update( &ctx, buffer, 32 );
|
||||
keccak256_4way_close( &ctx, state );
|
||||
keccak256_4x64_init( &ctx );
|
||||
keccak256_4x64_update( &ctx, buffer, 32 );
|
||||
keccak256_4x64_close( &ctx, state );
|
||||
}
|
||||
|
||||
int scanhash_sha3d_4way( struct work *work, uint32_t max_nonce,
|
||||
|
||||
Reference in New Issue
Block a user