int blake2b_pick_best_implementation(void) { /* LCOV_EXCL_START */ #if (defined(HAVE_AVX2INTRIN_H) && defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H)) || \ (defined(_MSC_VER) && (defined(_M_X64) || defined(_M_AMD64))) if (sodium_runtime_has_avx2()) { blake2b_compress = blake2b_compress_avx2; return 0; } #endif #if (defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H) && defined(HAVE_SMMINTRIN_H)) || \ (defined(_MSC_VER) && (defined(_M_X64) || defined(_M_AMD64) || defined(_M_IX86))) if (sodium_runtime_has_sse41()) { blake2b_compress = blake2b_compress_sse41; return 0; } #endif #if (defined(HAVE_EMMINTRIN_H) && defined(HAVE_TMMINTRIN_H)) || \ (defined(_MSC_VER) && (defined(_M_X64) || defined(_M_AMD64))) if (sodium_runtime_has_ssse3()) { blake2b_compress = blake2b_compress_ssse3; return 0; } #endif blake2b_compress = blake2b_compress_ref; return 0; /* LCOV_EXCL_STOP */ }
int main(void) { sodium_set_misuse_handler(NULL); sodium_set_misuse_handler(misuse_handler); sodium_set_misuse_handler(NULL); assert(sodium_init() == 1); (void) sodium_runtime_has_neon(); (void) sodium_runtime_has_sse2(); (void) sodium_runtime_has_sse3(); (void) sodium_runtime_has_ssse3(); (void) sodium_runtime_has_sse41(); (void) sodium_runtime_has_pclmul(); (void) sodium_runtime_has_aesni(); sodium_set_misuse_handler(misuse_handler); #ifndef __EMSCRIPTEN__ sodium_misuse(); printf("Misuse handler returned\n"); #else printf("misuse_handler()\n"); #endif return 0; }