Skip to content

Commit

Permalink
- fix missing convert from float to double in LSP and LSP_R opcodes
Browse files Browse the repository at this point in the history
- fix missing convert from double to float in SSP and SSP_R opcodes
  • Loading branch information
dpjudas committed Oct 11, 2018
1 parent aa6e09f commit fc870fc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
6 changes: 4 additions & 2 deletions src/scripting/vm/jit_load.cpp
Expand Up @@ -172,13 +172,15 @@ void JitCompiler::EmitLHU_R()
void JitCompiler::EmitLSP()
{
EmitNullPointerThrow(B, X_READ_NIL);
cc.movss(regF[A], asmjit::x86::dword_ptr(regA[B], konstd[C]));
cc.xorpd(regF[A], regF[A]);
cc.cvtss2sd(regF[A], asmjit::x86::dword_ptr(regA[B], konstd[C]));
}

void JitCompiler::EmitLSP_R()
{
EmitNullPointerThrow(B, X_READ_NIL);
cc.movss(regF[A], asmjit::x86::dword_ptr(regA[B], regD[C]));
cc.xorpd(regF[A], regF[A]);
cc.cvtss2sd(regF[A], asmjit::x86::dword_ptr(regA[B], regD[C]));
}

void JitCompiler::EmitLDP()
Expand Down
10 changes: 8 additions & 2 deletions src/scripting/vm/jit_store.cpp
Expand Up @@ -40,13 +40,19 @@ void JitCompiler::EmitSW_R()
void JitCompiler::EmitSSP()
{
EmitNullPointerThrow(A, X_WRITE_NIL);
cc.movss(asmjit::x86::dword_ptr(regA[A], konstd[C]), regF[B]);
auto tmp = newTempXmmSd();
cc.xorpd(tmp, tmp);
cc.cvtsd2ss(tmp, regF[B]);
cc.movss(asmjit::x86::dword_ptr(regA[A], konstd[C]), tmp);
}

void JitCompiler::EmitSSP_R()
{
EmitNullPointerThrow(A, X_WRITE_NIL);
cc.movss(asmjit::x86::dword_ptr(regA[A], regD[C]), regF[B]);
auto tmp = newTempXmmSd();
cc.xorpd(tmp, tmp);
cc.cvtsd2ss(tmp, regF[B]);
cc.movss(asmjit::x86::dword_ptr(regA[A], regD[C]), tmp);
}

void JitCompiler::EmitSDP()
Expand Down

0 comments on commit fc870fc

Please sign in to comment.