X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/373641eaacc86b56715a2ebf0b603fce25c16051..b9b279b4105524d5d4e5dcd389141645d904aa0c:/symm/salsa20.c diff --git a/symm/salsa20.c b/symm/salsa20.c index 15285985..e78baf05 100644 --- a/symm/salsa20.c +++ b/symm/salsa20.c @@ -72,15 +72,22 @@ static void simple_core(unsigned r, const salsa20_matrix src, #if CPUFAM_X86 || CPUFAM_AMD64 extern core__functype salsa20_core_x86ish_sse2; +extern core__functype salsa20_core_x86ish_avx; #endif #if CPUFAM_ARMEL extern core__functype salsa20_core_arm_neon; #endif +#if CPUFAM_ARM64 +extern core__functype salsa20_core_arm64; +#endif + static core__functype *pick_core(void) { #if CPUFAM_X86 || CPUFAM_AMD64 + DISPATCH_PICK_COND(salsa20_core, salsa20_core_x86ish_avx, + cpu_feature_p(CPUFEAT_X86_AVX)); DISPATCH_PICK_COND(salsa20_core, salsa20_core_x86ish_sse2, cpu_feature_p(CPUFEAT_X86_SSE2)); #endif @@ -88,6 +95,9 @@ static core__functype *pick_core(void) DISPATCH_PICK_COND(salsa20_core, salsa20_core_arm_neon, cpu_feature_p(CPUFEAT_ARM_NEON)); #endif +#if CPUFAM_ARM64 + DISPATCH_PICK_COND(salsa20_core, salsa20_core_arm64, 1); +#endif DISPATCH_PICK_FALLBACK(salsa20_core, simple_core); } @@ -767,7 +777,7 @@ static grand *grinit(const void *k, size_t ksz, const void *n, g->r.r.ops = ops; g->r.ops = myops; salsa20_init(&g->ctx, k, ksz, 0); - myops->setnonce(g, n); + if (n) myops->setnonce(g, n); return (&g->r.r); }