* the feedforward step.
*/
-CPU_DISPATCH(static, (void),
- void, core, (unsigned r, const chacha_matrix src,
- chacha_matrix dest),
- (r, src, dest),
- pick_core, simple_core);
+CPU_DISPATCH(static, (void), void, core,
+ (unsigned r, const chacha_matrix src, chacha_matrix dest),
+ (r, src, dest), pick_core, simple_core);
static void simple_core(unsigned r, const chacha_matrix src,
chacha_matrix dest)
{ CHACHA_nR(dest, src, r); CHACHA_FFWD(dest, src); }
-#ifdef CPUFAM_X86
-extern core__functype chacha_core_x86_sse2;
+#if CPUFAM_X86 || CPUFAM_AMD64
+extern core__functype chacha_core_x86ish_sse2;
+#endif
+
+#if CPUFAM_ARMEL
+extern core__functype chacha_core_arm_neon;
#endif
static core__functype *pick_core(void)
{
-#ifdef CPUFAM_X86
- if (cpu_feature_p(CPUFEAT_X86_SSE2)) return chacha_core_x86_sse2;
+#if CPUFAM_X86 || CPUFAM_AMD64
+ DISPATCH_PICK_COND(chacha_core, chacha_core_x86ish_sse2,
+ cpu_feature_p(CPUFEAT_X86_SSE2));
+#endif
+#if CPUFAM_ARMEL
+ DISPATCH_PICK_COND(chacha_core, chacha_core_arm_neon,
+ cpu_feature_p(CPUFEAT_ARM_NEON));
#endif
- return simple_core;
+ DISPATCH_PICK_FALLBACK(chacha_core, simple_core);
}
/* --- @populate@ --- *
static const grand_ops grops_rand_##rr = { \
"chacha" #rr, GRAND_CRYPTO, 0, \
grmisc, grdestroy, grword, \
- grbyte, grword, grand_range, grfill \
+ grbyte, grword, grand_defaultrange, grfill \
}; \
\
grand *chacha##rr##_rand(const void *k, size_t ksz, const void *n) \
static const grand_ops grxops_rand_##rr = { \
"xchacha" #rr, GRAND_CRYPTO, 0, \
grmisc, grxdestroy_##rr, grword, \
- grbyte, grword, grand_range, grfill \
+ grbyte, grword, grand_defaultrange, grfill \
}; \
\
grand *xchacha##rr##_rand(const void *k, size_t ksz, const void *n) \