mirror of
https://github.com/jpd002/Play-.git
synced 2025-04-28 13:47:57 +03:00
Use MakeClip.
Some checks failed
Check Format / run_clangformat (push) Has been cancelled
Build Android / build_android (apk) (push) Has been cancelled
Build Android / build_android (libretro) (push) Has been cancelled
Build iOS / build_ios (push) Has been cancelled
Build JavaScript / build_js (push) Has been cancelled
Build Linux / build_linux (push) Has been cancelled
Build Linux ARM32 / build_linux_arm32 (push) Has been cancelled
Build Linux ARM64 / build_linux_arm64 (push) Has been cancelled
Build macOS / build_macos (push) Has been cancelled
Build Windows / build_windows (x86_32, Visual Studio 16 2019, installer32.nsi, win32_msvc2019, Win32) (push) Has been cancelled
Build Windows Psf / build_windows_psf (on, x86_64, Visual Studio 16 2019, installer64.nsi, x64) (push) Has been cancelled
Build Windows / build_windows (x86_64, Visual Studio 16 2019, installer64.nsi, win64_msvc2019_64, x64) (push) Has been cancelled
Build Windows Psf / build_windows_psf (off, x86_64, Visual Studio 16 2019, installer64.nsi, x64) (push) Has been cancelled
Some checks failed
Check Format / run_clangformat (push) Has been cancelled
Build Android / build_android (apk) (push) Has been cancelled
Build Android / build_android (libretro) (push) Has been cancelled
Build iOS / build_ios (push) Has been cancelled
Build JavaScript / build_js (push) Has been cancelled
Build Linux / build_linux (push) Has been cancelled
Build Linux ARM32 / build_linux_arm32 (push) Has been cancelled
Build Linux ARM64 / build_linux_arm64 (push) Has been cancelled
Build macOS / build_macos (push) Has been cancelled
Build Windows / build_windows (x86_32, Visual Studio 16 2019, installer32.nsi, win32_msvc2019, Win32) (push) Has been cancelled
Build Windows Psf / build_windows_psf (on, x86_64, Visual Studio 16 2019, installer64.nsi, x64) (push) Has been cancelled
Build Windows / build_windows (x86_64, Visual Studio 16 2019, installer64.nsi, win64_msvc2019_64, x64) (push) Has been cancelled
Build Windows Psf / build_windows_psf (off, x86_64, Visual Studio 16 2019, installer64.nsi, x64) (push) Has been cancelled
This commit is contained in:
parent
43e373a540
commit
361bfece5d
2 changed files with 31 additions and 37 deletions
|
@ -759,7 +759,8 @@ void VUShared::ADDAq(CMipsJitter* codeGen, uint8 dest, uint8 fs, uint32 relative
|
||||||
|
|
||||||
void VUShared::CLIP(CMipsJitter* codeGen, uint8 nFs, uint8 nFt, uint32 relativePipeTime)
|
void VUShared::CLIP(CMipsJitter* codeGen, uint8 nFs, uint8 nFt, uint32 relativePipeTime)
|
||||||
{
|
{
|
||||||
size_t tempOffset = offsetof(CMIPS, m_State.nCOP2T);
|
//We can do better if we got this condition
|
||||||
|
assert(!((nFs == 0) && (nFt == 0)));
|
||||||
|
|
||||||
//Load previous value
|
//Load previous value
|
||||||
{
|
{
|
||||||
|
@ -772,51 +773,44 @@ void VUShared::CLIP(CMipsJitter* codeGen, uint8 nFs, uint8 nFt, uint32 relativeP
|
||||||
codeGen->And();
|
codeGen->And();
|
||||||
|
|
||||||
codeGen->LoadFromRefIdx();
|
codeGen->LoadFromRefIdx();
|
||||||
codeGen->PullRel(tempOffset);
|
|
||||||
|
//Create some space for the new test results
|
||||||
|
codeGen->Shl(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Create some space for the new test results
|
//Compute test result
|
||||||
codeGen->PushRel(tempOffset);
|
|
||||||
codeGen->Shl(6);
|
|
||||||
codeGen->PullRel(tempOffset);
|
|
||||||
|
|
||||||
for(unsigned int i = 0; i < 3; i++)
|
|
||||||
{
|
{
|
||||||
//c > +|w|
|
codeGen->MD_PushRel(offsetof(CMIPS, m_State.nCOP2[nFs]));
|
||||||
codeGen->FP_PushRel32(offsetof(CMIPS, m_State.nCOP2[nFs].nV[i]));
|
|
||||||
codeGen->FP_PushRel32(offsetof(CMIPS, m_State.nCOP2[nFt].nV[3]));
|
|
||||||
codeGen->FP_AbsS();
|
|
||||||
|
|
||||||
codeGen->FP_CmpS(Jitter::CONDITION_AB);
|
//Upper bound
|
||||||
codeGen->PushCst(0);
|
if(nFt == 0)
|
||||||
codeGen->BeginIf(Jitter::CONDITION_NE);
|
|
||||||
{
|
{
|
||||||
codeGen->PushRel(tempOffset);
|
codeGen->MD_PushCstExpand(1.0f);
|
||||||
codeGen->PushCst(1 << ((i * 2) + 0));
|
|
||||||
codeGen->Or();
|
|
||||||
codeGen->PullRel(tempOffset);
|
|
||||||
}
|
}
|
||||||
codeGen->EndIf();
|
else
|
||||||
|
|
||||||
//c < -|w|
|
|
||||||
codeGen->FP_PushRel32(offsetof(CMIPS, m_State.nCOP2[nFs].nV[i]));
|
|
||||||
codeGen->FP_PushRel32(offsetof(CMIPS, m_State.nCOP2[nFt].nV[3]));
|
|
||||||
codeGen->FP_AbsS();
|
|
||||||
codeGen->FP_NegS();
|
|
||||||
|
|
||||||
codeGen->FP_CmpS(Jitter::CONDITION_BL);
|
|
||||||
codeGen->PushCst(0);
|
|
||||||
codeGen->BeginIf(Jitter::CONDITION_NE);
|
|
||||||
{
|
{
|
||||||
codeGen->PushRel(tempOffset);
|
PushBcElement(codeGen, offsetof(CMIPS, m_State.nCOP2[nFt].nV[3]));
|
||||||
codeGen->PushCst(1 << ((i * 2) + 1));
|
codeGen->MD_AbsS();
|
||||||
codeGen->Or();
|
|
||||||
codeGen->PullRel(tempOffset);
|
|
||||||
}
|
}
|
||||||
codeGen->EndIf();
|
|
||||||
|
//Lower bound
|
||||||
|
if(nFt == 0)
|
||||||
|
{
|
||||||
|
codeGen->MD_PushCstExpand(-1.0f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PushBcElement(codeGen, offsetof(CMIPS, m_State.nCOP2[nFt].nV[3]));
|
||||||
|
codeGen->MD_AbsS();
|
||||||
|
codeGen->MD_NegS();
|
||||||
|
}
|
||||||
|
|
||||||
|
codeGen->MD_MakeClip();
|
||||||
}
|
}
|
||||||
|
|
||||||
codeGen->PushRel(tempOffset);
|
//Combine with previous value
|
||||||
|
codeGen->Or();
|
||||||
|
|
||||||
QueueInFlagPipeline(g_pipeInfoClip, codeGen, LATENCY_MAC, relativePipeTime);
|
QueueInFlagPipeline(g_pipeInfoClip, codeGen, LATENCY_MAC, relativePipeTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
deps/CodeGen
vendored
2
deps/CodeGen
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit 5af39cab7ecc0ff7341a575c1550d87f74fd2305
|
Subproject commit b82963b44f9105fa7ac0f0e44ea5c3f8415a472d
|
Loading…
Add table
Add a link
Reference in a new issue