[AArch64] Fix issue in emitter.
Loadstore pairs support only signed offsets, not unsigned.
This commit is contained in:
parent
5110574c1f
commit
f2c17436ab
|
@ -766,7 +766,7 @@ void ARM64XEmitter::EncodeLoadStorePair(u32 op, u32 load, IndexType type, ARM64R
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case INDEX_UNSIGNED:
|
case INDEX_SIGNED:
|
||||||
type_encode = 0b010;
|
type_encode = 0b010;
|
||||||
break;
|
break;
|
||||||
case INDEX_POST:
|
case INDEX_POST:
|
||||||
|
@ -775,8 +775,8 @@ void ARM64XEmitter::EncodeLoadStorePair(u32 op, u32 load, IndexType type, ARM64R
|
||||||
case INDEX_PRE:
|
case INDEX_PRE:
|
||||||
type_encode = 0b011;
|
type_encode = 0b011;
|
||||||
break;
|
break;
|
||||||
case INDEX_SIGNED:
|
case INDEX_UNSIGNED:
|
||||||
_assert_msg_(DYNA_REC, false, "%s doesn't support INDEX_SIGNED!", __FUNCTION__);
|
_assert_msg_(DYNA_REC, false, "%s doesn't support INDEX_UNSIGNED!", __FUNCTION__);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1992,7 +1992,7 @@ void ARM64XEmitter::ABI_PushRegisters(BitSet32 registers)
|
||||||
reg_pair.push_back((ARM64Reg)(X0 + it));
|
reg_pair.push_back((ARM64Reg)(X0 + it));
|
||||||
if (reg_pair.size() == 2)
|
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();
|
reg_pair.clear();
|
||||||
current_offset += 16;
|
current_offset += 16;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue