in include/internal/gf2x_internal.h [131:172]
_INLINE_ void gf2x_ctx_init(gf2x_ctx *ctx)
{
#if defined(X86_64)
if(is_avx512_enabled()) {
ctx->karatzuba_add1 = karatzuba_add1_avx512;
ctx->karatzuba_add2 = karatzuba_add2_avx512;
ctx->karatzuba_add3 = karatzuba_add3_avx512;
ctx->k_sqr = k_sqr_avx512;
ctx->red = gf2x_red_avx512;
} else if(is_avx2_enabled()) {
ctx->karatzuba_add1 = karatzuba_add1_avx2;
ctx->karatzuba_add2 = karatzuba_add2_avx2;
ctx->karatzuba_add3 = karatzuba_add3_avx2;
ctx->k_sqr = k_sqr_avx2;
ctx->red = gf2x_red_avx2;
} else
#endif
{
ctx->karatzuba_add1 = karatzuba_add1_port;
ctx->karatzuba_add2 = karatzuba_add2_port;
ctx->karatzuba_add3 = karatzuba_add3_port;
ctx->k_sqr = k_sqr_port;
ctx->red = gf2x_red_port;
}
#if defined(X86_64)
if(is_vpclmul_enabled()) {
ctx->mul_base_qwords = GF2X_VPCLMUL_BASE_QWORDS;
ctx->mul_base = gf2x_mul_base_vpclmul;
ctx->sqr = gf2x_sqr_vpclmul;
} else if(is_pclmul_enabled()) {
ctx->mul_base_qwords = GF2X_PCLMUL_BASE_QWORDS;
ctx->mul_base = gf2x_mul_base_pclmul;
ctx->sqr = gf2x_sqr_pclmul;
} else
#endif
{
ctx->mul_base_qwords = GF2X_PORT_BASE_QWORDS;
ctx->mul_base = gf2x_mul_base_port;
ctx->sqr = gf2x_sqr_port;
}
}