X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/98421fc1a6832ad5de4b3f6171852437aa3e0fb2..HEAD:/symm/rijndael-base.c diff --git a/symm/rijndael-base.c b/symm/rijndael-base.c index b0505a66..2f651918 100644 --- a/symm/rijndael-base.c +++ b/symm/rijndael-base.c @@ -112,20 +112,38 @@ static void simple_setup(rijndael_ctx *k, unsigned nb, k->wi[i] = k->w[j + jj++]; } -CPU_DISPATCH(static, EMPTY, void, setup, (rijndael_ctx *k, unsigned nb, - const void *buf, unsigned nk), +CPU_DISPATCH(static, EMPTY, void, setup, + (rijndael_ctx *k, unsigned nb, const void *buf, unsigned nk), (k, nb, buf, nk), pick_setup, simple_setup) #if CPUFAM_X86 || CPUFAM_AMD64 extern setup__functype rijndael_setup_x86ish_aesni; +extern setup__functype rijndael_setup_x86ish_aesni_avx; +#endif +#if CPUFAM_ARMEL && HAVE_AS_ARMV8_CRYPTO +extern setup__functype rijndael_setup_arm_crypto; +#endif +#if CPUFAM_ARM64 +extern setup__functype rijndael_setup_arm64_crypto; #endif static setup__functype *pick_setup(void) { #if CPUFAM_X86 || CPUFAM_AMD64 + DISPATCH_PICK_COND(rijndael_setup, rijndael_setup_x86ish_aesni_avx, + cpu_feature_p(CPUFEAT_X86_AVX) && + cpu_feature_p(CPUFEAT_X86_AESNI)); DISPATCH_PICK_COND(rijndael_setup, rijndael_setup_x86ish_aesni, cpu_feature_p(CPUFEAT_X86_AESNI)); #endif +#if CPUFAM_ARMEL && HAVE_AS_ARMV8_CRYPTO + DISPATCH_PICK_COND(rijndael_setup, rijndael_setup_arm_crypto, + cpu_feature_p(CPUFEAT_ARM_AES)); +#endif +#if CPUFAM_ARM64 + DISPATCH_PICK_COND(rijndael_setup, rijndael_setup_arm64_crypto, + cpu_feature_p(CPUFEAT_ARM_AES)); +#endif DISPATCH_PICK_FALLBACK(rijndael_setup, simple_setup); }