Fixed move with negative numbers on arm64

This commit is contained in:
2025-03-14 11:58:36 +01:00
parent 9410287605
commit 1d0e49f0e3
3 changed files with 45 additions and 5 deletions

View File

@ -27,6 +27,24 @@ func TestMoveRegisterRegister(t *testing.T) {
}
}
func TestMoveRegisterNumber(t *testing.T) {
usagePatterns := []struct {
Register cpu.Register
Number int
Code uint32
}{
{arm.X0, 0, 0xD2800000},
{arm.X0, 1, 0xD2800020},
{arm.X0, -1, 0x92800000},
}
for _, pattern := range usagePatterns {
t.Logf("mov %s, %d", pattern.Register, pattern.Number)
code := arm.MoveRegisterNumber(pattern.Register, pattern.Number)
assert.DeepEqual(t, code, pattern.Code)
}
}
func TestMoveKeep(t *testing.T) {
usagePatterns := []struct {
Register cpu.Register
@ -38,7 +56,7 @@ func TestMoveKeep(t *testing.T) {
}
for _, pattern := range usagePatterns {
t.Logf("movk %s, %x", pattern.Register, pattern.Number)
t.Logf("movk %s, %d", pattern.Register, pattern.Number)
code := arm.MoveKeep(pattern.Register, 0, pattern.Number)
assert.DeepEqual(t, code, pattern.Code)
}
@ -55,7 +73,7 @@ func TestMoveZero(t *testing.T) {
}
for _, pattern := range usagePatterns {
t.Logf("movz %s, %x", pattern.Register, pattern.Number)
t.Logf("movz %s, %d", pattern.Register, pattern.Number)
code := arm.MoveZero(pattern.Register, 0, pattern.Number)
assert.DeepEqual(t, code, pattern.Code)
}