42 lines
798 B
Go
42 lines
798 B
Go
package reg
|
|
|
|
import "testing"
|
|
|
|
func TestSetRegisterIdentity(t *testing.T) {
|
|
rs := []Register{
|
|
NewVirtual(42, GP, B32),
|
|
NewVirtual(43, GP, B32),
|
|
NewVirtual(42, SSEAVX, B32),
|
|
NewVirtual(42, GP, B64),
|
|
AL, AH, CL,
|
|
AX, R13W,
|
|
EDX, R9L,
|
|
RCX, R14,
|
|
X1, X7,
|
|
Y4, Y9,
|
|
Z13, Z31,
|
|
}
|
|
s := NewEmptySet()
|
|
for _, r := range rs {
|
|
s.Add(r)
|
|
s.Add(r)
|
|
}
|
|
if len(s) != len(rs) {
|
|
t.Fatalf("expected set to have same size as slice: got %d expect %d", len(s), len(rs))
|
|
}
|
|
}
|
|
|
|
func TestSetFamilyRegisters(t *testing.T) {
|
|
fs := []*Family{GeneralPurpose, SIMD}
|
|
s := NewEmptySet()
|
|
expect := 0
|
|
for _, f := range fs {
|
|
s.Update(f.Set())
|
|
s.Add(f.Virtual(42, B64))
|
|
expect += len(f.Registers()) + 1
|
|
}
|
|
if len(s) != expect {
|
|
t.Fatalf("set size mismatch: %d expected %d", len(s), expect)
|
|
}
|
|
}
|