_INLINE_ void gf2x_ctx_init()

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;
  }
}