q/src/arm/Xor_test.go
Eduard Urbach 3ae47f93eb
All checks were successful
/ test (push) Successful in 19s
Added arm package
2025-06-23 11:49:39 +02:00

49 lines
No EOL
1.3 KiB
Go

package arm_test
import (
"testing"
"git.urbach.dev/cli/q/src/arm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/go/assert"
)
func TestXorRegisterNumber(t *testing.T) {
usagePatterns := []struct {
Destination cpu.Register
Source cpu.Register
Number int
Code uint32
}{
{arm.X0, arm.X1, 1, 0xD2400020},
{arm.X0, arm.X1, 2, 0xD27F0020},
{arm.X0, arm.X1, 3, 0xD2400420},
{arm.X0, arm.X1, 7, 0xD2400820},
{arm.X0, arm.X1, 16, 0xD27C0020},
{arm.X0, arm.X1, 255, 0xD2401C20},
}
for _, pattern := range usagePatterns {
t.Logf("eor %s, %s, %d", pattern.Destination, pattern.Source, pattern.Number)
code, encodable := arm.XorRegisterNumber(pattern.Destination, pattern.Source, pattern.Number)
assert.True(t, encodable)
assert.Equal(t, code, pattern.Code)
}
}
func TestXorRegisterRegister(t *testing.T) {
usagePatterns := []struct {
Destination cpu.Register
Source cpu.Register
Operand cpu.Register
Code uint32
}{
{arm.X0, arm.X1, arm.X2, 0xCA020020},
}
for _, pattern := range usagePatterns {
t.Logf("eor %s, %s, %s", pattern.Destination, pattern.Source, pattern.Operand)
code := arm.XorRegisterRegister(pattern.Destination, pattern.Source, pattern.Operand)
assert.Equal(t, code, pattern.Code)
}
}