mirror of
https://github.com/jpd002/Play-.git
synced 2025-05-09 03:58:12 +03:00
Added MIN.S and MAX.S and some missing CodeGen cases.
git-svn-id: http://svn.purei.org/purei/trunk@512 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
parent
965705ad39
commit
d0fef1d64a
9 changed files with 93 additions and 3 deletions
|
@ -1247,6 +1247,19 @@ void CCodeGen::Cmp(CONDITION nCondition)
|
|||
|
||||
Cmp(nCondition);
|
||||
}
|
||||
else if(FitsPattern<ConstantRegister>())
|
||||
{
|
||||
RegisterConstant::PatternValue ops = GetPattern<ConstantRegister>();
|
||||
unsigned int register1 = AllocateRegister();
|
||||
unsigned int register2 = ops.second;
|
||||
|
||||
LoadConstantInRegister(register1, ops.first);
|
||||
|
||||
PushReg(register1);
|
||||
PushReg(register2);
|
||||
|
||||
Cmp(nCondition);
|
||||
}
|
||||
else if(FitsPattern<RegisterConstant>())
|
||||
{
|
||||
RegisterConstant::PatternValue ops = GetPattern<RegisterConstant>();
|
||||
|
@ -2035,6 +2048,34 @@ void CCodeGen::Shl64(uint8 nAmount)
|
|||
ops.q <<= nAmount;
|
||||
PushCst(ops.d0);
|
||||
PushCst(ops.d1);
|
||||
}
|
||||
else if(FitsPattern<ConstantRelative>())
|
||||
{
|
||||
//Upper = Relative
|
||||
//Lower = Constant
|
||||
ConstantRelative::PatternValue ops(GetPattern<ConstantRelative>());
|
||||
|
||||
if(nAmount < 32)
|
||||
{
|
||||
unsigned int register1 = AllocateRegister();
|
||||
unsigned int register2 = AllocateRegister();
|
||||
|
||||
LoadConstantInRegister(register1, ops.first);
|
||||
LoadRelativeInRegister(register2, ops.second);
|
||||
|
||||
m_Assembler.ShldEd(
|
||||
CX86Assembler::MakeRegisterAddress(m_nRegisterLookupEx[register2]),
|
||||
m_nRegisterLookupEx[register1], nAmount);
|
||||
|
||||
m_Assembler.ShlEd(CX86Assembler::MakeRegisterAddress(m_nRegisterLookupEx[register1]), nAmount);
|
||||
|
||||
PushReg(register1);
|
||||
PushReg(register2);
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue