#ifndef __BEE2_U32_H
#define __BEE2_U32_H
#include "bee2/defs.h"
#include "bee2/core/safe.h"
#ifdef __cplusplus
extern "C" {
#endif
#define U32_0 ((u32)0)
#define U32_1 ((u32)1)
#define U32_MAX ((u32)(U32_0 - U32_1))
#define u32RotHi(w, d)\
((u32)((w) << (d) | (w) >> (32 - (d))))
#define u32RotLo(w, d)\
((u32)((w) >> (d) | (w) << (32 - (d))))
u32 u32Rev(
register u32 w
);
void u32Rev2(
u32 buf[],
size_t count
);
u32 u32Bitrev(
register u32 w
);
size_t u32Weight(
register u32 w
);
bool_t u32Parity(
register u32 w
);
size_t u32CTZ(
register u32 w
);
size_t SAFE(u32CTZ)(register u32 w);
size_t FAST(u32CTZ)(register u32 w);
size_t u32CLZ(
register u32 w
);
size_t SAFE(u32CLZ)(register u32 w);
size_t FAST(u32CLZ)(register u32 w);
u32 u32Shuffle(
register u32 w
);
u32 u32Deshuffle(
register u32 w
);
u32 u32NegInv(
register u32 w
);
void u32From(
u32 dest[],
const void* src,
size_t count
);
void u32To(
void* dest,
size_t count,
const u32 src[]
);
#ifdef __cplusplus
}
#endif
#endif