#ifndef SHAVITE_HASH_2WAY_H__ #define SHAVITE_HASH_2WAY_H__ #ifdef __cplusplus extern "C" { #endif #if defined(__AVX2__) #include "simd-utils.h" typedef struct { unsigned char buf[128 << 1]; uint32_t h[16 << 1]; size_t ptr; uint32_t count0, count1, count2, count3; } shavite512_2way_context __attribute__((aligned(64))); void shavite512_2way_init(shavite512_2way_context *ctx); void shavite512_2way_update(shavite512_2way_context *ctx, const void *data, size_t len); void shavite512_2way_close(shavite512_2way_context *ctx, void *dst); void shavite512_2way_update_close(shavite512_2way_context *ctx, void *dst, const void *data, size_t len); void shavite512_2way_full(shavite512_2way_context *ctx, void *dst, const void *data, size_t len); #endif // AVX2 #ifdef __cplusplus } #endif #endif // SHAVITE_HASH_2WAY_H__