public void VfpuMatrixMultAndMov()
{
CpuThreadState.Vfpr.ClearAll(float.NaN);
CpuThreadState.Vfpr["M100.q"] = new float[]
{
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16,
};
CpuThreadState.Vfpr["M200.q"] = new float[]
{
17, 18, 19, 20,
21, 22, 23, 24,
25, 26, 27, 28,
29, 30, 31, 32,
};
ExecuteAssembly(@"
vmmul.q M000, M100, M200
vmmov.q M400, M000
");
Assert.AreEqual(
"250,260,270,280," +
"618,644,670,696," +
"986,1028,1070,1112," +
"1354,1412,1470,1528",
String.Join(",", CpuThreadState.Vfpr["M000.q"])
);
Assert.AreEqual(
String.Join(",", CpuThreadState.Vfpr["M400.q"]),
String.Join(",", CpuThreadState.Vfpr["M000.q"])
);
}