Rework 'cn-pico/tlo' support
This commit is contained in:
parent
b80ac8cdd1
commit
9ae7fdb5ac
5 changed files with 24 additions and 41 deletions
|
@ -99,8 +99,12 @@ size_t inline generate<Algorithm::CN_HEAVY>(Threads<CpuThreads> &threads, uint32
|
||||||
template<>
|
template<>
|
||||||
size_t inline generate<Algorithm::CN_PICO>(Threads<CpuThreads> &threads, uint32_t limit)
|
size_t inline generate<Algorithm::CN_PICO>(Threads<CpuThreads> &threads, uint32_t limit)
|
||||||
{
|
{
|
||||||
return generate("cn-pico", threads, Algorithm::CN_PICO_0, limit) &&
|
size_t count = 0;
|
||||||
generate("cn-pico/tlo", threads, Algorithm::CN_PICO_TLO, limit);
|
|
||||||
|
count += generate("cn-pico", threads, Algorithm::CN_PICO_0, limit);
|
||||||
|
count += generate("cn-pico/tlo", threads, Algorithm::CN_PICO_TLO, limit);
|
||||||
|
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -101,8 +101,12 @@ size_t inline generate<Algorithm::CN_HEAVY>(Threads<CudaThreads> &threads, const
|
||||||
template<>
|
template<>
|
||||||
size_t inline generate<Algorithm::CN_PICO>(Threads<CudaThreads> &threads, const std::vector<CudaDevice> &devices)
|
size_t inline generate<Algorithm::CN_PICO>(Threads<CudaThreads> &threads, const std::vector<CudaDevice> &devices)
|
||||||
{
|
{
|
||||||
return generate("cn-pico", threads, Algorithm::CN_PICO_0, devices) &&
|
size_t count = 0;
|
||||||
generate("cn-pico/tlo", threads, Algorithm::CN_PICO_TLO, devices);
|
|
||||||
|
count += generate("cn-pico", threads, Algorithm::CN_PICO_0, devices);
|
||||||
|
count += generate("cn-pico/tlo", threads, Algorithm::CN_PICO_TLO, devices);
|
||||||
|
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -100,8 +100,12 @@ size_t inline generate<Algorithm::CN_HEAVY>(Threads<OclThreads> &threads, const
|
||||||
template<>
|
template<>
|
||||||
size_t inline generate<Algorithm::CN_PICO>(Threads<OclThreads> &threads, const std::vector<OclDevice> &devices)
|
size_t inline generate<Algorithm::CN_PICO>(Threads<OclThreads> &threads, const std::vector<OclDevice> &devices)
|
||||||
{
|
{
|
||||||
return generate("cn-pico", threads, Algorithm::CN_PICO_0, devices) &&
|
size_t count = 0;
|
||||||
generate("cn-pico/tlo", threads, Algorithm::CN_PICO_TLO, devices);
|
|
||||||
|
count += generate("cn-pico", threads, Algorithm::CN_PICO_0, devices);
|
||||||
|
count += generate("cn-pico/tlo", threads, Algorithm::CN_PICO_TLO, devices);
|
||||||
|
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -79,11 +79,6 @@ cn_mainloop_fun cn_trtl_mainloop_ryzen_asm = nullptr;
|
||||||
cn_mainloop_fun cn_trtl_mainloop_bulldozer_asm = nullptr;
|
cn_mainloop_fun cn_trtl_mainloop_bulldozer_asm = nullptr;
|
||||||
cn_mainloop_fun cn_trtl_double_mainloop_sandybridge_asm = nullptr;
|
cn_mainloop_fun cn_trtl_double_mainloop_sandybridge_asm = nullptr;
|
||||||
|
|
||||||
cn_mainloop_fun cn_tlo_mainloop_ivybridge_asm = nullptr;
|
|
||||||
cn_mainloop_fun cn_tlo_mainloop_ryzen_asm = nullptr;
|
|
||||||
cn_mainloop_fun cn_tlo_mainloop_bulldozer_asm = nullptr;
|
|
||||||
cn_mainloop_fun cn_tlo_double_mainloop_sandybridge_asm = nullptr;
|
|
||||||
|
|
||||||
cn_mainloop_fun cn_zls_mainloop_ivybridge_asm = nullptr;
|
cn_mainloop_fun cn_zls_mainloop_ivybridge_asm = nullptr;
|
||||||
cn_mainloop_fun cn_zls_mainloop_ryzen_asm = nullptr;
|
cn_mainloop_fun cn_zls_mainloop_ryzen_asm = nullptr;
|
||||||
cn_mainloop_fun cn_zls_mainloop_bulldozer_asm = nullptr;
|
cn_mainloop_fun cn_zls_mainloop_bulldozer_asm = nullptr;
|
||||||
|
@ -146,11 +141,6 @@ static void patchAsmVariants()
|
||||||
cn_trtl_mainloop_ryzen_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x5000);
|
cn_trtl_mainloop_ryzen_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x5000);
|
||||||
cn_trtl_mainloop_bulldozer_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x6000);
|
cn_trtl_mainloop_bulldozer_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x6000);
|
||||||
cn_trtl_double_mainloop_sandybridge_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x7000);
|
cn_trtl_double_mainloop_sandybridge_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x7000);
|
||||||
|
|
||||||
cn_tlo_mainloop_ivybridge_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x4000);
|
|
||||||
cn_tlo_mainloop_ryzen_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x5000);
|
|
||||||
cn_tlo_mainloop_bulldozer_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x6000);
|
|
||||||
cn_tlo_double_mainloop_sandybridge_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x7000);
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
cn_zls_mainloop_ivybridge_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x8000);
|
cn_zls_mainloop_ivybridge_asm = reinterpret_cast<cn_mainloop_fun> (base + 0x8000);
|
||||||
|
@ -187,10 +177,10 @@ static void patchAsmVariants()
|
||||||
constexpr uint32_t ITER = CnAlgo<Algorithm::CN_PICO_TLO>().iterations();
|
constexpr uint32_t ITER = CnAlgo<Algorithm::CN_PICO_TLO>().iterations();
|
||||||
constexpr uint32_t MASK = CnAlgo<Algorithm::CN_PICO_TLO>().mask();
|
constexpr uint32_t MASK = CnAlgo<Algorithm::CN_PICO_TLO>().mask();
|
||||||
|
|
||||||
patchCode(cn_tlo_mainloop_ivybridge_asm, cnv2_mainloop_ivybridge_asm, ITER, MASK);
|
patchCode(cn_trtl_mainloop_ivybridge_asm, cnv2_mainloop_ivybridge_asm, ITER, MASK);
|
||||||
patchCode(cn_tlo_mainloop_ryzen_asm, cnv2_mainloop_ryzen_asm, ITER, MASK);
|
patchCode(cn_trtl_mainloop_ryzen_asm, cnv2_mainloop_ryzen_asm, ITER, MASK);
|
||||||
patchCode(cn_tlo_mainloop_bulldozer_asm, cnv2_mainloop_bulldozer_asm, ITER, MASK);
|
patchCode(cn_trtl_mainloop_bulldozer_asm, cnv2_mainloop_bulldozer_asm, ITER, MASK);
|
||||||
patchCode(cn_tlo_double_mainloop_sandybridge_asm, cnv2_double_mainloop_sandybridge_asm, ITER, MASK);
|
patchCode(cn_trtl_double_mainloop_sandybridge_asm, cnv2_double_mainloop_sandybridge_asm, ITER, MASK);
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
|
|
@ -794,11 +794,6 @@ extern cn_mainloop_fun cn_trtl_mainloop_ryzen_asm;
|
||||||
extern cn_mainloop_fun cn_trtl_mainloop_bulldozer_asm;
|
extern cn_mainloop_fun cn_trtl_mainloop_bulldozer_asm;
|
||||||
extern cn_mainloop_fun cn_trtl_double_mainloop_sandybridge_asm;
|
extern cn_mainloop_fun cn_trtl_double_mainloop_sandybridge_asm;
|
||||||
|
|
||||||
extern cn_mainloop_fun cn_tlo_mainloop_ivybridge_asm;
|
|
||||||
extern cn_mainloop_fun cn_tlo_mainloop_ryzen_asm;
|
|
||||||
extern cn_mainloop_fun cn_tlo_mainloop_bulldozer_asm;
|
|
||||||
extern cn_mainloop_fun cn_tlo_double_mainloop_sandybridge_asm;
|
|
||||||
|
|
||||||
extern cn_mainloop_fun cn_zls_mainloop_ivybridge_asm;
|
extern cn_mainloop_fun cn_zls_mainloop_ivybridge_asm;
|
||||||
extern cn_mainloop_fun cn_zls_mainloop_ryzen_asm;
|
extern cn_mainloop_fun cn_zls_mainloop_ryzen_asm;
|
||||||
extern cn_mainloop_fun cn_zls_mainloop_bulldozer_asm;
|
extern cn_mainloop_fun cn_zls_mainloop_bulldozer_asm;
|
||||||
|
@ -873,7 +868,7 @@ inline void cryptonight_single_hash_asm(const uint8_t *__restrict__ input, size_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# ifdef XMRIG_ALGO_CN_PICO
|
# ifdef XMRIG_ALGO_CN_PICO
|
||||||
else if (ALGO == Algorithm::CN_PICO_0) {
|
else if (ALGO == Algorithm::CN_PICO_0 || ALGO == Algorithm::CN_PICO_TLO) {
|
||||||
if (ASM == Assembly::INTEL) {
|
if (ASM == Assembly::INTEL) {
|
||||||
cn_trtl_mainloop_ivybridge_asm(ctx);
|
cn_trtl_mainloop_ivybridge_asm(ctx);
|
||||||
}
|
}
|
||||||
|
@ -884,17 +879,6 @@ inline void cryptonight_single_hash_asm(const uint8_t *__restrict__ input, size_
|
||||||
cn_trtl_mainloop_bulldozer_asm(ctx);
|
cn_trtl_mainloop_bulldozer_asm(ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ALGO == Algorithm::CN_PICO_TLO) {
|
|
||||||
if (ASM == Assembly::INTEL) {
|
|
||||||
cn_tlo_mainloop_ivybridge_asm(ctx);
|
|
||||||
}
|
|
||||||
else if (ASM == Assembly::RYZEN) {
|
|
||||||
cn_tlo_mainloop_ryzen_asm(ctx);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cn_tlo_mainloop_bulldozer_asm(ctx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# endif
|
# endif
|
||||||
else if (ALGO == Algorithm::CN_RWZ) {
|
else if (ALGO == Algorithm::CN_RWZ) {
|
||||||
cnv2_rwz_mainloop_asm(ctx);
|
cnv2_rwz_mainloop_asm(ctx);
|
||||||
|
@ -957,12 +941,9 @@ inline void cryptonight_double_hash_asm(const uint8_t *__restrict__ input, size_
|
||||||
cn_half_double_mainloop_sandybridge_asm(ctx);
|
cn_half_double_mainloop_sandybridge_asm(ctx);
|
||||||
}
|
}
|
||||||
# ifdef XMRIG_ALGO_CN_PICO
|
# ifdef XMRIG_ALGO_CN_PICO
|
||||||
else if (ALGO == Algorithm::CN_PICO_0) {
|
else if (ALGO == Algorithm::CN_PICO_0 || ALGO == Algorithm::CN_PICO_TLO) {
|
||||||
cn_trtl_double_mainloop_sandybridge_asm(ctx);
|
cn_trtl_double_mainloop_sandybridge_asm(ctx);
|
||||||
}
|
}
|
||||||
else if (ALGO == Algorithm::CN_PICO_TLO) {
|
|
||||||
cn_tlo_double_mainloop_sandybridge_asm(ctx);
|
|
||||||
}
|
|
||||||
# endif
|
# endif
|
||||||
else if (ALGO == Algorithm::CN_RWZ) {
|
else if (ALGO == Algorithm::CN_RWZ) {
|
||||||
cnv2_rwz_double_mainloop_asm(ctx);
|
cnv2_rwz_double_mainloop_asm(ctx);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue