mirror of
https://github.com/libretro/Play-.git
synced 2025-02-13 04:52:32 +00:00
Added DSRAV and updated tests.
git-svn-id: http://svn.purei.org/purei/trunk@1013 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
parent
2e4f31839b
commit
c5b5e43264
@ -920,6 +920,17 @@ void CMA_MIPSIV::DSRLV()
|
||||
m_codeGen->PullRel64(offsetof(CMIPS, m_State.nGPR[m_nRD].nV[0]));
|
||||
}
|
||||
|
||||
//17
|
||||
void CMA_MIPSIV::DSRAV()
|
||||
{
|
||||
assert(m_regSize == MIPS_REGSIZE_64);
|
||||
|
||||
m_codeGen->PushRel64(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[0]));
|
||||
m_codeGen->PushRel(offsetof(CMIPS, m_State.nGPR[m_nRS].nV[0]));
|
||||
m_codeGen->Sra64();
|
||||
m_codeGen->PullRel64(offsetof(CMIPS, m_State.nGPR[m_nRD].nV[0]));
|
||||
}
|
||||
|
||||
//18
|
||||
void CMA_MIPSIV::MULT()
|
||||
{
|
||||
@ -1192,7 +1203,7 @@ CMA_MIPSIV::InstructionFuncConstant CMA_MIPSIV::m_cOpSpecial[MAX_SPECIAL_OPS] =
|
||||
//0x08
|
||||
&CMA_MIPSIV::JR, &CMA_MIPSIV::JALR, &CMA_MIPSIV::MOVZ, &CMA_MIPSIV::MOVN, &CMA_MIPSIV::SYSCALL, &CMA_MIPSIV::BREAK, &CMA_MIPSIV::Illegal, &CMA_MIPSIV::SYNC,
|
||||
//0x10
|
||||
&CMA_MIPSIV::MFHI, &CMA_MIPSIV::MTHI, &CMA_MIPSIV::MFLO, &CMA_MIPSIV::MTLO, &CMA_MIPSIV::DSLLV, &CMA_MIPSIV::Illegal, &CMA_MIPSIV::DSRLV, &CMA_MIPSIV::Illegal,
|
||||
&CMA_MIPSIV::MFHI, &CMA_MIPSIV::MTHI, &CMA_MIPSIV::MFLO, &CMA_MIPSIV::MTLO, &CMA_MIPSIV::DSLLV, &CMA_MIPSIV::Illegal, &CMA_MIPSIV::DSRLV, &CMA_MIPSIV::DSRAV,
|
||||
//0x18
|
||||
&CMA_MIPSIV::MULT, &CMA_MIPSIV::MULTU, &CMA_MIPSIV::DIV, &CMA_MIPSIV::DIVU, &CMA_MIPSIV::Illegal, &CMA_MIPSIV::Illegal, &CMA_MIPSIV::Illegal, &CMA_MIPSIV::Illegal,
|
||||
//0x20
|
||||
|
@ -163,6 +163,7 @@ private:
|
||||
void SYNC();
|
||||
void DSLLV();
|
||||
void DSRLV();
|
||||
void DSRAV();
|
||||
void MFHI();
|
||||
void MTHI();
|
||||
void MFLO();
|
||||
|
@ -20,8 +20,8 @@ void CShift64Test::Execute(CTestVm& virtualMachine)
|
||||
[](uint64 value, unsigned int shiftAmount) -> uint64 { return value << shiftAmount; });
|
||||
TestVariableShift(virtualMachine, &CMIPSAssembler::DSRLV,
|
||||
[](uint64 value, unsigned int shiftAmount) -> uint64 { return value >> shiftAmount; });
|
||||
// TestVariableShift(virtualMachine, &CMIPSAssembler::DSRAV,
|
||||
// [](uint64 value, unsigned int shiftAmount) -> uint64 { return static_cast<int64>(value) >> shiftAmount; });
|
||||
TestVariableShift(virtualMachine, &CMIPSAssembler::DSRAV,
|
||||
[](uint64 value, unsigned int shiftAmount) -> uint64 { return static_cast<int64>(value) >> shiftAmount; });
|
||||
}
|
||||
|
||||
void CShift64Test::TestShift(CTestVm& virtualMachine, const ShiftAssembleFunction& assembleFunction, const ShiftFunction& shiftFunction)
|
||||
|
Loading…
x
Reference in New Issue
Block a user