00001
00036 #ifndef SPH_SIMD_H__
00037 #define SPH_SIMD_H__
00038
00039 #include <stddef.h>
00040 #include "sph_types.h"
00041
00045 #define SPH_SIZE_simd224 224
00046
00050 #define SPH_SIZE_simd256 256
00051
00055 #define SPH_SIZE_simd384 384
00056
00060 #define SPH_SIZE_simd512 512
00061
00073 typedef struct {
00074 #ifndef DOXYGEN_IGNORE
00075 unsigned char buf[64];
00076 size_t ptr;
00077 sph_u32 state[16];
00078 sph_u32 count_low, count_high;
00079 #endif
00080 } sph_simd_small_context;
00081
00093 typedef struct {
00094 #ifndef DOXYGEN_IGNORE
00095 unsigned char buf[128];
00096 size_t ptr;
00097 sph_u32 state[32];
00098 sph_u32 count_low, count_high;
00099 #endif
00100 } sph_simd_big_context;
00101
00105 typedef sph_simd_small_context sph_simd224_context;
00106
00110 typedef sph_simd_small_context sph_simd256_context;
00111
00115 typedef sph_simd_big_context sph_simd384_context;
00116
00120 typedef sph_simd_big_context sph_simd512_context;
00121
00128 void sph_simd224_init(void *cc);
00129
00138 void sph_simd224(void *cc, const void *data, size_t len);
00139
00149 void sph_simd224_close(void *cc, void *dst);
00150
00164 void sph_simd224_addbits_and_close(
00165 void *cc, unsigned ub, unsigned n, void *dst);
00166
00173 void sph_simd256_init(void *cc);
00174
00183 void sph_simd256(void *cc, const void *data, size_t len);
00184
00194 void sph_simd256_close(void *cc, void *dst);
00195
00209 void sph_simd256_addbits_and_close(
00210 void *cc, unsigned ub, unsigned n, void *dst);
00211
00218 void sph_simd384_init(void *cc);
00219
00228 void sph_simd384(void *cc, const void *data, size_t len);
00229
00239 void sph_simd384_close(void *cc, void *dst);
00240
00254 void sph_simd384_addbits_and_close(
00255 void *cc, unsigned ub, unsigned n, void *dst);
00256
00263 void sph_simd512_init(void *cc);
00264
00273 void sph_simd512(void *cc, const void *data, size_t len);
00274
00284 void sph_simd512_close(void *cc, void *dst);
00285
00299 void sph_simd512_addbits_and_close(
00300 void *cc, unsigned ub, unsigned n, void *dst);
00301
00302 #endif