aboutsummaryrefslogtreecommitdiff
path: root/c/blake3_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/blake3_impl.h')
-rw-r--r--c/blake3_impl.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/c/blake3_impl.h b/c/blake3_impl.h
index 51d792a..facd599 100644
--- a/c/blake3_impl.h
+++ b/c/blake3_impl.h
@@ -9,6 +9,10 @@
#include "blake3.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
// internal flags
enum blake3_flags {
CHUNK_START = 1 << 0,
@@ -28,6 +32,12 @@ enum blake3_flags {
#define INLINE static inline __attribute__((always_inline))
#endif
+#ifdef __cplusplus
+#define NOEXCEPT noexcept
+#else
+#define NOEXCEPT
+#endif
+
#if (defined(__x86_64__) || defined(_M_X64)) && !defined(_M_ARM64EC)
#define IS_X86
#define IS_X86_64
@@ -210,6 +220,22 @@ void blake3_hash_many(const uint8_t *const *inputs, size_t num_inputs,
size_t blake3_simd_degree(void);
+BLAKE3_PRIVATE size_t blake3_compress_subtree_wide(const uint8_t *input, size_t input_len,
+ const uint32_t key[8],
+ uint64_t chunk_counter, uint8_t flags,
+ uint8_t *out, bool use_tbb);
+
+#if defined(BLAKE3_USE_TBB)
+BLAKE3_PRIVATE void blake3_compress_subtree_wide_join_tbb(
+ // shared params
+ const uint32_t key[8], uint8_t flags, bool use_tbb,
+ // left-hand side params
+ const uint8_t *l_input, size_t l_input_len, uint64_t l_chunk_counter,
+ uint8_t *l_cvs, size_t *l_n,
+ // right-hand side params
+ const uint8_t *r_input, size_t r_input_len, uint64_t r_chunk_counter,
+ uint8_t *r_cvs, size_t *r_n) NOEXCEPT;
+#endif
// Declarations for implementation-specific functions.
void blake3_compress_in_place_portable(uint32_t cv[8],
@@ -300,5 +326,8 @@ void blake3_hash_many_neon(const uint8_t *const *inputs, size_t num_inputs,
uint8_t flags_end, uint8_t *out);
#endif
+#ifdef __cplusplus
+}
+#endif
#endif /* BLAKE3_IMPL_H */