parent
a522fd532d
commit
eaabb2337b
@ -0,0 +1,87 @@ |
||||
#pragma once |
||||
/**
|
||||
@file |
||||
@brief Fp generator |
||||
@author MITSUNARI Shigeo(@herumi) |
||||
@license modified new BSD license |
||||
http://opensource.org/licenses/BSD-3-Clause
|
||||
*/ |
||||
#ifndef MCL_STATIC_CODE |
||||
#error "define MCL_STATIC_CODE" |
||||
#endif |
||||
|
||||
namespace mcl { namespace fp { |
||||
|
||||
extern "C" { |
||||
|
||||
Unit mclx_Fp_addPre(Unit*, const Unit*, const Unit*); |
||||
Unit mclx_Fp_subPre(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp_add(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp_sub(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp_shr1(Unit*, const Unit*); |
||||
void mclx_Fp_neg(Unit*, const Unit*); |
||||
void mclx_Fp_mul(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp_sqr(Unit*, const Unit*); |
||||
void mclx_FpDbl_add(Unit*, const Unit*, const Unit*); |
||||
void mclx_FpDbl_sub(Unit*, const Unit*, const Unit*); |
||||
void mclx_FpDbl_add(Unit*, const Unit*, const Unit*); |
||||
void mclx_FpDbl_sub(Unit*, const Unit*, const Unit*); |
||||
Unit mclx_FpDbl_addPre(Unit*, const Unit*, const Unit*); |
||||
Unit mclx_FpDbl_subPre(Unit*, const Unit*, const Unit*); |
||||
void mclx_FpDbl_mulPre(Unit*, const Unit*, const Unit*); |
||||
void mclx_FpDbl_sqrPre(Unit*, const Unit*); |
||||
void mclx_FpDbl_mod(Unit*, const Unit*); |
||||
void mclx_Fp2_add(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp2_sub(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp2_neg(Unit*, const Unit*); |
||||
void mclx_Fp2_mul(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fp2_sqr(Unit*, const Unit*); |
||||
void mclx_Fp2_mul_xi(Unit*, const Unit*); |
||||
|
||||
Unit mclx_Fr_addPre(Unit*, const Unit*, const Unit*); |
||||
Unit mclx_Fr_subPre(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fr_add(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fr_sub(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fr_shr1(Unit*, const Unit*); |
||||
void mclx_Fr_neg(Unit*, const Unit*); |
||||
void mclx_Fr_mul(Unit*, const Unit*, const Unit*); |
||||
void mclx_Fr_sqr(Unit*, const Unit*); |
||||
int mclx_Fr_preInv(Unit*, const Unit*); |
||||
} // extern "C"
|
||||
|
||||
void setStaticCode(mcl::fp::Op& op) |
||||
{ |
||||
if (op.xi_a) { |
||||
// Fp, sizeof(Fp) = 48, supports Fp2
|
||||
op.fp_addPre = mclx_Fp_addPre; |
||||
op.fp_subPre = mclx_Fp_subPre; |
||||
op.fp_addA_ = mclx_Fp_add; |
||||
op.fp_subA_ = mclx_Fp_sub; |
||||
op.fp_shr1 = mclx_Fp_shr1; |
||||
op.fp_negA_ = mclx_Fp_neg; |
||||
op.fpDbl_addA_ = mclx_FpDbl_add; |
||||
op.fpDbl_subA_ = mclx_FpDbl_sub; |
||||
op.fpDbl_addPre = mclx_FpDbl_addPre; |
||||
op.fpDbl_subPre = mclx_FpDbl_subPre; |
||||
op.fpDbl_mulPreA_ = mclx_FpDbl_mulPre; |
||||
op.fpDbl_sqrPreA_ = mclx_FpDbl_sqrPre; |
||||
op.fpDbl_modA_ = mclx_FpDbl_mod; |
||||
op.fp_mulA_ = mclx_Fp_mul; |
||||
op.fp_sqrA_ = mclx_Fp_sqr; |
||||
} else { |
||||
// Fr, sizeof(Fr) = 32
|
||||
op.fp_addPre = mclx_Fr_addPre; |
||||
op.fp_subPre = mclx_Fr_subPre; |
||||
op.fp_addA_ = mclx_Fr_add; |
||||
op.fp_subA_ = mclx_Fr_sub; |
||||
op.fp_shr1 = mclx_Fr_shr1; |
||||
op.fp_negA_ = mclx_Fr_neg; |
||||
op.fp_mulA_ = mclx_Fr_mul; |
||||
op.fp_sqrA_ = mclx_Fr_sqr; |
||||
op.fp_preInv = mclx_Fr_preInv; |
||||
} |
||||
op.fp_mul = fp::func_ptr_cast<void4u>(op.fp_mulA_); |
||||
} |
||||
|
||||
} } // mcl::fp
|
||||
|
Loading…
Reference in new issue