5#include "hashx_endian.h"
6#include "unreachable.h"
8uint64_t hashx_siphash13_ctr(uint64_t input,
const siphash_state* keys) {
9 uint64_t v0 = keys->v0;
10 uint64_t v1 = keys->v1;
11 uint64_t v2 = keys->v2;
12 uint64_t v3 = keys->v3;
16 SIPROUND(v0, v1, v2, v3);
21 SIPROUND(v0, v1, v2, v3);
22 SIPROUND(v0, v1, v2, v3);
23 SIPROUND(v0, v1, v2, v3);
25 return (v0 ^ v1) ^ (v2 ^ v3);
28void hashx_siphash24_ctr_state512(
const siphash_state* keys, uint64_t input,
29 uint64_t state_out[8]) {
31 uint64_t v0 = keys->v0;
32 uint64_t v1 = keys->v1;
33 uint64_t v2 = keys->v2;
34 uint64_t v3 = keys->v3;
39 SIPROUND(v0, v1, v2, v3);
40 SIPROUND(v0, v1, v2, v3);
45 SIPROUND(v0, v1, v2, v3);
46 SIPROUND(v0, v1, v2, v3);
47 SIPROUND(v0, v1, v2, v3);
48 SIPROUND(v0, v1, v2, v3);
57 SIPROUND(v0, v1, v2, v3);
58 SIPROUND(v0, v1, v2, v3);
59 SIPROUND(v0, v1, v2, v3);
60 SIPROUND(v0, v1, v2, v3);