2018-12-30 18:40:45 -08:00
|
|
|
package reg
|
|
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
|
|
|
|
func TestAsMethods(t *testing.T) {
|
|
|
|
|
cases := [][2]Register{
|
|
|
|
|
{RAX.As8(), AL},
|
|
|
|
|
{ECX.As8L(), CL},
|
|
|
|
|
{EBX.As8H(), BH},
|
|
|
|
|
{R9B.As16(), R9W},
|
|
|
|
|
{DH.As32(), EDX},
|
|
|
|
|
{R14L.As64(), R14},
|
|
|
|
|
{X2.AsX(), X2},
|
|
|
|
|
{X4.AsY(), Y4},
|
|
|
|
|
{X9.AsZ(), Z9},
|
|
|
|
|
{Y2.AsX(), X2},
|
|
|
|
|
{Y4.AsY(), Y4},
|
|
|
|
|
{Y9.AsZ(), Z9},
|
|
|
|
|
{Z2.AsX(), X2},
|
|
|
|
|
{Z4.AsY(), Y4},
|
|
|
|
|
{Z9.AsZ(), Z9},
|
|
|
|
|
}
|
|
|
|
|
for _, c := range cases {
|
2020-01-22 22:50:40 -08:00
|
|
|
if !Equal(c[0], c[1]) {
|
|
|
|
|
t.FailNow()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestAsPreservesGPPhysical(t *testing.T) {
|
|
|
|
|
cases := []Register{
|
|
|
|
|
RAX.As8(),
|
|
|
|
|
R13.As8L(),
|
|
|
|
|
AL.As8H(),
|
|
|
|
|
EAX.As16(),
|
|
|
|
|
CH.As32(),
|
|
|
|
|
EBX.As64(),
|
|
|
|
|
}
|
|
|
|
|
for _, r := range cases {
|
|
|
|
|
if _, ok := r.(GPPhysical); !ok {
|
|
|
|
|
t.FailNow()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestAsPreservesGPVirtual(t *testing.T) {
|
|
|
|
|
collection := NewCollection()
|
|
|
|
|
cases := []Register{
|
|
|
|
|
collection.GP16().As8(),
|
|
|
|
|
collection.GP32().As8L(),
|
|
|
|
|
collection.GP64().As8H(),
|
|
|
|
|
collection.GP8().As16(),
|
|
|
|
|
collection.GP8L().As32(),
|
|
|
|
|
collection.GP8H().As64(),
|
|
|
|
|
}
|
|
|
|
|
for _, r := range cases {
|
|
|
|
|
if _, ok := r.(GPVirtual); !ok {
|
|
|
|
|
t.FailNow()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestAsPreservesVecPhysical(t *testing.T) {
|
|
|
|
|
cases := []Register{
|
|
|
|
|
Y13.AsX(),
|
|
|
|
|
X3.AsY(),
|
|
|
|
|
Y10.AsZ(),
|
|
|
|
|
}
|
|
|
|
|
for _, r := range cases {
|
|
|
|
|
if _, ok := r.(VecPhysical); !ok {
|
|
|
|
|
t.FailNow()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestAsPreservesVecVirtual(t *testing.T) {
|
|
|
|
|
collection := NewCollection()
|
|
|
|
|
cases := []Register{
|
|
|
|
|
collection.ZMM().AsX(),
|
|
|
|
|
collection.XMM().AsY(),
|
|
|
|
|
collection.YMM().AsZ(),
|
|
|
|
|
}
|
|
|
|
|
for _, r := range cases {
|
|
|
|
|
if _, ok := r.(VecVirtual); !ok {
|
2018-12-30 18:40:45 -08:00
|
|
|
t.FailNow()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|