mirror of
https://git.wownero.com/wownero/RandomWOW.git
synced 2024-12-22 07:48:54 +00:00
js -> jz to enable macro-op fusion on Intel CPUs (~1% speed-up)
This commit is contained in:
parent
76b6b05cf2
commit
a09bee8d60
@ -49,7 +49,7 @@ namespace RandomX {
|
||||
void AssemblyGeneratorX86::generateCode(Instruction& instr, int i) {
|
||||
asmCode << "rx_i_" << i << ": ;" << instr.getName() << std::endl;
|
||||
asmCode << "\tdec edi" << std::endl;
|
||||
asmCode << "\tjs rx_finish" << std::endl;
|
||||
asmCode << "\tjz rx_finish" << std::endl;
|
||||
auto generator = engine[instr.opcode];
|
||||
(this->*generator)(instr, i);
|
||||
}
|
||||
|
@ -81,10 +81,10 @@ namespace RandomX {
|
||||
|
||||
*/
|
||||
|
||||
constexpr uint8_t ic3 = (InstructionCount >> 24);
|
||||
constexpr uint8_t ic2 = (InstructionCount >> 16);
|
||||
constexpr uint8_t ic1 = (InstructionCount >> 8);
|
||||
constexpr uint8_t ic0 = (InstructionCount >> 0);
|
||||
constexpr uint8_t ic3 = ((InstructionCount + 1) >> 24);
|
||||
constexpr uint8_t ic2 = ((InstructionCount + 1) >> 16);
|
||||
constexpr uint8_t ic1 = ((InstructionCount + 1) >> 8);
|
||||
constexpr uint8_t ic0 = ((InstructionCount + 1) >> 0);
|
||||
|
||||
const uint8_t prologue[] = {
|
||||
0x53, //push rbx
|
||||
@ -245,7 +245,7 @@ namespace RandomX {
|
||||
|
||||
void JitCompilerX86::generateCode(Instruction& instr, int i) {
|
||||
instructionOffsets.push_back(codePos);
|
||||
emit(0x880fcfff); //dec edx; js <epilogue>
|
||||
emit(0x840fcfff); //dec edx; jz <epilogue>
|
||||
emit(epilogueOffset - (codePos + 4)); //jump offset (RIP-relative)
|
||||
gena(instr);
|
||||
auto generator = engine[instr.opcode];
|
||||
|
@ -84,7 +84,7 @@ executeProgram PROC
|
||||
push r9
|
||||
|
||||
mov rbp, rsp ; beginning of VM stack
|
||||
mov rdi, 1048576 ; number of VM instructions to execute
|
||||
mov rdi, 1048577 ; number of VM instructions to execute + 1
|
||||
|
||||
; load VM register values
|
||||
mov r8, qword ptr [rcx+0]
|
||||
|
Loading…
Reference in New Issue
Block a user