This commit is contained in:
Ben Gräf 2019-02-09 00:01:30 +01:00
parent a6c88e2d7e
commit f6cd9068af

View file

@ -1447,36 +1447,46 @@ public:
if (SOFT_AES) { if (SOFT_AES) {
scratchPad[0]->t_fn = (const uint32_t*)saes_table; scratchPad[0]->t_fn = (const uint32_t*)saes_table;
if (ITERATIONS == 0x40000) { switch (powVariant)
if (powVariant == PowVariant::POW_MSR) { {
case POW_MSR:
cnv1_main_loop_fast_soft_aes_sandybridge_asm(scratchPad[0]); cnv1_main_loop_fast_soft_aes_sandybridge_asm(scratchPad[0]);
} else { break;
cnv1_main_loop_lite_soft_aes_sandybridge_asm(scratchPad[0]); case POW_UPX:
} cnv1_main_loop_upx_soft_aes_sandybridge_asm(scratchPad[0]);
} else if (ITERATIONS == 0x20000) { break;
cnv1_main_loop_upx_soft_aes_sandybridge_asm(scratchPad[0]); case POW_RTO:
} else { case POW_HOSP:
if (powVariant == PowVariant::POW_HOSP || powVariant == PowVariant::POW_RTO) {
cnv1_main_loop_rto_soft_aes_sandybridge_asm(scratchPad[0]); cnv1_main_loop_rto_soft_aes_sandybridge_asm(scratchPad[0]);
} else { break;
cnv1_main_loop_soft_aes_sandybridge_asm(scratchPad[0]); default:
} if (ITERATIONS == 0x40000) {
cnv1_main_loop_lite_soft_aes_sandybridge_asm(scratchPad[0]);
} else {
cnv1_main_loop_soft_aes_sandybridge_asm(scratchPad[0]);
}
break;
} }
} else { } else {
if (ITERATIONS == 0x40000) { switch (powVariant)
if (powVariant == PowVariant::POW_MSR) { {
case POW_MSR:
cnv1_main_loop_fast_sandybridge_asm(scratchPad[0]); cnv1_main_loop_fast_sandybridge_asm(scratchPad[0]);
} else { break;
cnv1_main_loop_lite_sandybridge_asm(scratchPad[0]); case POW_UPX:
} cnv1_main_loop_upx_sandybridge_asm(scratchPad[0]);
} else if (ITERATIONS == 0x20000) { break;
cnv1_main_loop_upx_sandybridge_asm(scratchPad[0]); case POW_RTO:
} else { case POW_HOSP:
if (powVariant == PowVariant::POW_HOSP || powVariant == PowVariant::POW_RTO) {
cnv1_main_loop_rto_sandybridge_asm(scratchPad[0]); cnv1_main_loop_rto_sandybridge_asm(scratchPad[0]);
} else { break;
cnv1_main_loop_sandybridge_asm(scratchPad[0]); default:
} if (ITERATIONS == 0x40000) {
cnv1_main_loop_lite_sandybridge_asm(scratchPad[0]);
} else {
cnv1_main_loop_sandybridge_asm(scratchPad[0]);
}
break;
} }
} }
#endif #endif
@ -1578,37 +1588,58 @@ public:
if (SOFT_AES) { if (SOFT_AES) {
scratchPad[0]->input = input; scratchPad[0]->input = input;
scratchPad[0]->t_fn = (const uint32_t*)saes_table; scratchPad[0]->t_fn = (const uint32_t*)saes_table;
if (ITERATIONS == 0x40000) {
cnv2_main_loop_fastv2_soft_aes_sandybridge_asm(scratchPad[0]); switch (powVariant)
} else if (ITERATIONS == 0x10000) { {
cnv2_main_loop_ultralite_soft_aes_sandybridge_asm(scratchPad[0]); case POW_FAST_2:
} else { cnv2_main_loop_fastv2_soft_aes_sandybridge_asm(scratchPad[0]);
cnv2_main_loop_soft_aes_sandybridge_asm(scratchPad[0]); break;
case POW_TURTLE:
cnv2_main_loop_ultralite_soft_aes_sandybridge_asm(scratchPad[0]);
break;
default:
cnv2_main_loop_soft_aes_sandybridge_asm(scratchPad[0]);
break;
} }
} else { } else {
if (ITERATIONS == 0x40000) { switch (powVariant)
cnv2_main_loop_fastv2_ivybridge_asm(scratchPad[0]); {
} else if (ITERATIONS == 0x10000) { case POW_FAST_2:
cnv2_main_loop_ultralite_ivybridge_asm(scratchPad[0]); cnv2_main_loop_fastv2_ivybridge_asm(scratchPad[0]);
} else { break;
cnv2_main_loop_ivybridge_asm(scratchPad[0]); case POW_TURTLE:
cnv2_main_loop_ultralite_ivybridge_asm(scratchPad[0]);
break;
default:
cnv2_main_loop_ivybridge_asm(scratchPad[0]);
break;
} }
} }
} else if (asmOptimization == AsmOptimization::ASM_RYZEN) { } else if (asmOptimization == AsmOptimization::ASM_RYZEN) {
if (ITERATIONS == 0x40000) { switch (powVariant)
cnv2_main_loop_fastv2_ryzen_asm(scratchPad[0]); {
} else if (ITERATIONS == 0x10000) { case POW_FAST_2:
cnv2_main_loop_ultralite_ryzen_asm(scratchPad[0]); cnv2_main_loop_fastv2_ryzen_asm(scratchPad[0]);
} else { break;
cnv2_main_loop_ryzen_asm(scratchPad[0]); case POW_TURTLE:
cnv2_main_loop_ultralite_ryzen_asm(scratchPad[0]);
break;
default:
cnv2_main_loop_ryzen_asm(scratchPad[0]);
break;
} }
} else if (asmOptimization == AsmOptimization::ASM_BULLDOZER) { } else if (asmOptimization == AsmOptimization::ASM_BULLDOZER) {
if (ITERATIONS == 0x40000) { switch (powVariant)
cnv2_main_loop_fastv2_bulldozer_asm(scratchPad[0]); {
} else if (ITERATIONS == 0x10000) { case POW_FAST_2:
cnv2_main_loop_ultralite_bulldozer_asm(scratchPad[0]); cnv2_main_loop_fastv2_bulldozer_asm(scratchPad[0]);
} else { break;
cnv2_main_loop_bulldozer_asm(scratchPad[0]); case POW_TURTLE:
cnv2_main_loop_ultralite_bulldozer_asm(scratchPad[0]);
break;
default:
cnv2_main_loop_bulldozer_asm(scratchPad[0]);
break;
} }
} }
#endif #endif
@ -2327,15 +2358,18 @@ public:
cn_explode_scratchpad<MEM, SOFT_AES>((__m128i*) h1, (__m128i*) l1); cn_explode_scratchpad<MEM, SOFT_AES>((__m128i*) h1, (__m128i*) l1);
#ifndef XMRIG_NO_ASM #ifndef XMRIG_NO_ASM
if (ITERATIONS == 0x40000) { switch(powVariant) {
cnv2_double_main_loop_fastv2_sandybridge_asm(scratchPad[0], scratchPad[1]); case POW_FAST_2:
} else if (ITERATIONS == 0x10000) { cnv2_double_main_loop_fastv2_sandybridge_asm(scratchPad[0], scratchPad[1]);
cnv2_double_main_loop_ultralite_sandybridge_asm(scratchPad[0], scratchPad[1]); break;
} else { case POW_TURTLE:
cnv2_double_main_loop_sandybridge_asm(scratchPad[0], scratchPad[1]); cnv2_double_main_loop_ultralite_sandybridge_asm(scratchPad[0], scratchPad[1]);
break;
default:
cnv2_double_main_loop_sandybridge_asm(scratchPad[0], scratchPad[1]);
break;
} }
#endif #endif
cn_implode_scratchpad<MEM, SOFT_AES>((__m128i*) l0, (__m128i*) h0); cn_implode_scratchpad<MEM, SOFT_AES>((__m128i*) l0, (__m128i*) h0);
cn_implode_scratchpad<MEM, SOFT_AES>((__m128i*) l1, (__m128i*) h1); cn_implode_scratchpad<MEM, SOFT_AES>((__m128i*) l1, (__m128i*) h1);