CPU fix for the cases using a Mask with shift = 0
This commit is contained in:
parent
d067b4d5e0
commit
b50bc46888
2 changed files with 9 additions and 2 deletions
|
@ -88,7 +88,14 @@ namespace ChocolArm64.Decoder
|
||||||
|
|
||||||
private static long ShlOnes(long Value, int Shift)
|
private static long ShlOnes(long Value, int Shift)
|
||||||
{
|
{
|
||||||
return Value << Shift | (long)(ulong.MaxValue >> (64 - Shift));
|
if (Shift != 0)
|
||||||
|
{
|
||||||
|
return Value << Shift | (long)(ulong.MaxValue >> (64 - Shift));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -58,7 +58,7 @@ namespace ChocolArm64.Instruction
|
||||||
|
|
||||||
int Shift = Op.Imm - (8 << Op.Size);
|
int Shift = Op.Imm - (8 << Op.Size);
|
||||||
|
|
||||||
ulong Mask = ulong.MaxValue >> (64 - Shift);
|
ulong Mask = Shift != 0 ? ulong.MaxValue >> (64 - Shift) : 0;
|
||||||
|
|
||||||
for (int Index = 0; Index < (Bytes >> Op.Size); Index++)
|
for (int Index = 0; Index < (Bytes >> Op.Size); Index++)
|
||||||
{
|
{
|
||||||
|
|
Reference in a new issue