From cf7cd3a131fe2f63bf82afe38b080b48246ccccf Mon Sep 17 00:00:00 2001 From: Jack O'Connor Date: Mon, 27 Jan 2020 13:46:00 -0500 Subject: [PATCH] add NEON support to blake3_dispatch.c Currently this requires setting the BLAKE3_USE_NEON preprocessor flag. In the future we may enable this automatically on AArch32/64 or include some kind of dynamic feature detection. (Though ARM makes this harder than x86.) Closes #30. --- c/blake3_dispatch.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/c/blake3_dispatch.c b/c/blake3_dispatch.c index 27a4d773..1d5096ab 100644 --- a/c/blake3_dispatch.c +++ b/c/blake3_dispatch.c @@ -249,6 +249,7 @@ void blake3_hash_many(const uint8_t *const *inputs, size_t num_inputs, bool increment_counter, uint8_t flags, uint8_t flags_start, uint8_t flags_end, uint8_t *out) { const enum cpu_feature features = get_cpu_features(); + #if defined(IS_X86) #if !defined(BLAKE3_NO_AVX512) if (features & AVX512F) { @@ -275,6 +276,13 @@ void blake3_hash_many(const uint8_t *const *inputs, size_t num_inputs, } #endif #endif + +#if defined(IS_ARM) && defined(BLAKE3_USE_NEON) + blake3_hash_many_neon(inputs, num_inputs, blocks, key, counter, + increment_counter, flags, flags_start, flags_end, out); + return; +#endif + blake3_hash_many_portable(inputs, num_inputs, blocks, key, counter, increment_counter, flags, flags_start, flags_end, out);