From 01db567e9d70164e0757752e21a0f5c3d234a451 Mon Sep 17 00:00:00 2001 From: tevador Date: Wed, 1 May 2019 14:46:51 +0200 Subject: [PATCH] Fixed an inconsistency in IADD_RS in SuperscalarHash --- src/assembly_generator_x86.cpp | 4 ++-- src/jit_compiler_x86.cpp | 2 +- src/superscalar.cpp | 2 +- src/tests/benchmark.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/assembly_generator_x86.cpp b/src/assembly_generator_x86.cpp index 8af12c4..4492ec2 100644 --- a/src/assembly_generator_x86.cpp +++ b/src/assembly_generator_x86.cpp @@ -72,7 +72,7 @@ namespace randomx { asmCode << "xor " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; break; case SuperscalarInstructionType::IADD_RS: - asmCode << "lea " << regR[instr.dst] << ", [" << regR[instr.dst] << "+" << regR[instr.src] << "*" << (1 << (instr.getModMem())) << "]" << std::endl; + asmCode << "lea " << regR[instr.dst] << ", [" << regR[instr.dst] << "+" << regR[instr.src] << "*" << (1 << (instr.getModShift())) << "]" << std::endl; break; case SuperscalarInstructionType::IMUL_R: asmCode << "imul " << regR[instr.dst] << ", " << regR[instr.src] << std::endl; @@ -181,7 +181,7 @@ namespace randomx { asmCode << regR[instr.dst] << " ^= " << regR[instr.src] << ";" << std::endl; break; case SuperscalarInstructionType::IADD_RS: - asmCode << regR[instr.dst] << " += " << regR[instr.src] << "*" << (1 << (instr.getModMem())) << ";" << std::endl; + asmCode << regR[instr.dst] << " += " << regR[instr.src] << "*" << (1 << (instr.getModShift())) << ";" << std::endl; break; case SuperscalarInstructionType::IMUL_R: asmCode << regR[instr.dst] << " *= " << regR[instr.src] << ";" << std::endl; diff --git a/src/jit_compiler_x86.cpp b/src/jit_compiler_x86.cpp index cfda4f9..5182e8f 100644 --- a/src/jit_compiler_x86.cpp +++ b/src/jit_compiler_x86.cpp @@ -352,7 +352,7 @@ namespace randomx { case randomx::SuperscalarInstructionType::IADD_RS: emit(REX_LEA); emitByte(0x04 + 8 * instr.dst); - genSIB(instr.getModMem(), instr.src, instr.dst); + genSIB(instr.getModShift(), instr.src, instr.dst); break; case randomx::SuperscalarInstructionType::IMUL_R: emit(REX_IMUL_RR); diff --git a/src/superscalar.cpp b/src/superscalar.cpp index 44132e9..fbdc04e 100644 --- a/src/superscalar.cpp +++ b/src/superscalar.cpp @@ -849,7 +849,7 @@ namespace randomx { r[instr.dst] ^= r[instr.src]; break; case randomx::SuperscalarInstructionType::IADD_RS: - r[instr.dst] += r[instr.src] << instr.getModMem(); + r[instr.dst] += r[instr.src] << instr.getModShift(); break; case randomx::SuperscalarInstructionType::IMUL_R: r[instr.dst] *= r[instr.src]; diff --git a/src/tests/benchmark.cpp b/src/tests/benchmark.cpp index bac6c40..4f7a8f6 100644 --- a/src/tests/benchmark.cpp +++ b/src/tests/benchmark.cpp @@ -229,7 +229,7 @@ int main(int argc, char** argv) { std::cout << "Calculated result: "; result.print(std::cout); if (noncesCount == 1000 && seedValue == 0) - std::cout << "Reference result: 6d95d8d07fa3a80771f33d1b20452b61ab2d0bf21058b5e586fad38bf3e1e0ca" << std::endl; + std::cout << "Reference result: a15448785857f9a78703eb5da235dfe73d0d5fc4c8effaebe73869904f5af47d" << std::endl; if (!miningMode) { std::cout << "Performance: " << 1000 * elapsed / noncesCount << " ms per hash" << std::endl; }