Merge pull request #2929 from Sonicadvance1/aarch64_optimize_gpr_flush

Aarch64 optimize gpr flush
This commit is contained in:
Ryan Houdek
2015-08-31 10:55:45 -05:00
4 changed files with 59 additions and 16 deletions

View File

@ -766,7 +766,7 @@ void ARM64XEmitter::EncodeLoadStorePair(u32 op, u32 load, IndexType type, ARM64R
switch (type)
{
case INDEX_UNSIGNED:
case INDEX_SIGNED:
type_encode = 0b010;
break;
case INDEX_POST:
@ -775,8 +775,8 @@ void ARM64XEmitter::EncodeLoadStorePair(u32 op, u32 load, IndexType type, ARM64R
case INDEX_PRE:
type_encode = 0b011;
break;
case INDEX_SIGNED:
_assert_msg_(DYNA_REC, false, "%s doesn't support INDEX_SIGNED!", __FUNCTION__);
case INDEX_UNSIGNED:
_assert_msg_(DYNA_REC, false, "%s doesn't support INDEX_UNSIGNED!", __FUNCTION__);
break;
}
@ -1998,7 +1998,7 @@ void ARM64XEmitter::ABI_PushRegisters(BitSet32 registers)
reg_pair.push_back((ARM64Reg)(X0 + it));
if (reg_pair.size() == 2)
{
STP(INDEX_UNSIGNED, reg_pair[0], reg_pair[1], SP, current_offset);
STP(INDEX_SIGNED, reg_pair[0], reg_pair[1], SP, current_offset);
reg_pair.clear();
current_offset += 16;
}