diff --git a/src/crypto/equihash.cpp b/src/crypto/equihash.cpp index 57a5f4dac..b5caba956 100644 --- a/src/crypto/equihash.cpp +++ b/src/crypto/equihash.cpp @@ -654,6 +654,16 @@ template bool Equihash<96,3>::OptimisedSolve(const eh_HashState& base_state, const std::function cancelled); template bool Equihash<96,3>::IsValidSolution(const eh_HashState& base_state, std::vector soln); +// Explicit instantiations for Equihash<200,9> +template int Equihash<200,9>::InitialiseState(eh_HashState& base_state); +template bool Equihash<200,9>::BasicSolve(const eh_HashState& base_state, + const std::function)> validBlock, + const std::function cancelled); +template bool Equihash<200,9>::OptimisedSolve(const eh_HashState& base_state, + const std::function)> validBlock, + const std::function cancelled); +template bool Equihash<200,9>::IsValidSolution(const eh_HashState& base_state, std::vector soln); + // Explicit instantiations for Equihash<96,5> template int Equihash<96,5>::InitialiseState(eh_HashState& base_state); template bool Equihash<96,5>::BasicSolve(const eh_HashState& base_state, diff --git a/src/crypto/equihash.h b/src/crypto/equihash.h index c03b23566..7b06ecb08 100644 --- a/src/crypto/equihash.h +++ b/src/crypto/equihash.h @@ -171,12 +171,15 @@ public: #include "equihash.tcc" static Equihash<96,3> Eh96_3; +static Equihash<200,9> Eh200_9; static Equihash<96,5> Eh96_5; static Equihash<48,5> Eh48_5; #define EhInitialiseState(n, k, base_state) \ if (n == 96 && k == 3) { \ Eh96_3.InitialiseState(base_state); \ + } else if (n == 200 && k == 9) { \ + Eh200_9.InitialiseState(base_state); \ } else if (n == 96 && k == 5) { \ Eh96_5.InitialiseState(base_state); \ } else if (n == 48 && k == 5) { \ @@ -191,6 +194,8 @@ inline bool EhBasicSolve(unsigned int n, unsigned int k, const eh_HashState& bas { if (n == 96 && k == 3) { return Eh96_3.BasicSolve(base_state, validBlock, cancelled); + } else if (n == 200 && k == 9) { + return Eh200_9.BasicSolve(base_state, validBlock, cancelled); } else if (n == 96 && k == 5) { return Eh96_5.BasicSolve(base_state, validBlock, cancelled); } else if (n == 48 && k == 5) { @@ -213,6 +218,8 @@ inline bool EhOptimisedSolve(unsigned int n, unsigned int k, const eh_HashState& { if (n == 96 && k == 3) { return Eh96_3.OptimisedSolve(base_state, validBlock, cancelled); + } else if (n == 200 && k == 9) { + return Eh200_9.OptimisedSolve(base_state, validBlock, cancelled); } else if (n == 96 && k == 5) { return Eh96_5.OptimisedSolve(base_state, validBlock, cancelled); } else if (n == 48 && k == 5) { @@ -232,6 +239,8 @@ inline bool EhOptimisedSolveUncancellable(unsigned int n, unsigned int k, const #define EhIsValidSolution(n, k, base_state, soln, ret) \ if (n == 96 && k == 3) { \ ret = Eh96_3.IsValidSolution(base_state, soln); \ + } else if (n == 200 && k == 9) { \ + ret = Eh200_9.IsValidSolution(base_state, soln); \ } else if (n == 96 && k == 5) { \ ret = Eh96_5.IsValidSolution(base_state, soln); \ } else if (n == 48 && k == 5) { \