Skip to content

Commit

Permalink
add NEON support to blake3_dispatch.c
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
oconnor663 committed Jan 27, 2020
1 parent dec0c49 commit cf7cd3a
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions c/blake3_dispatch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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);
Expand Down

0 comments on commit cf7cd3a

Please sign in to comment.