Beispiel #1
0
 public static int[] GetIndicesVector(int size, VfpuRegisterInt register) =>
 GetIndicesVector(VfpuRegisterInfo.FromVfpuRegisterInt(VfpuRegisterType.Vector, size, register));
Beispiel #2
0
 public static int[,] GetIndicesMatrix(int size, VfpuRegisterInt register) =>
 GetIndicesMatrix(VfpuRegisterInfo.FromVfpuRegisterInt(VfpuRegisterType.Matrix, size, register));
 public static VfpuRegisterInfo FromVfpuRegisterInt(VfpuRegisterType type, int size, VfpuRegisterInt register)
 {
     if (type == VfpuRegisterType.Vector && size == 1)
     {
         type = VfpuRegisterType.Cell;
     }
     return(Parse(size, VfpuConstants.GetRegisterNameByIndex(type, size, register.Value)));
 }
Beispiel #4
0
 public static int GetIndexCell(VfpuRegisterInt register) =>
 GetIndexCell(VfpuRegisterInfo.FromVfpuRegisterInt(VfpuRegisterType.Cell, 1, register));
Beispiel #5
0
 public static int[,] GetIndicesMatrix(int Size, VfpuRegisterInt Register)
 {
     return GetIndicesMatrix(VfpuRegisterInfo.FromVfpuRegisterInt(VfpuRegisterType.Matrix, Size, Register));
 }
Beispiel #6
0
 public static int[] GetIndicesVector(int Size, VfpuRegisterInt Register)
 {
     return GetIndicesVector(VfpuRegisterInfo.FromVfpuRegisterInt(VfpuRegisterType.Vector, Size, Register));
 }
Beispiel #7
0
 public static int GetIndexCell(VfpuRegisterInt Register)
 {
     return GetIndexCell(VfpuRegisterInfo.FromVfpuRegisterInt(VfpuRegisterType.Cell, 1, Register));
 }
Beispiel #8
0
 public static VfpuRegisterInfo FromVfpuRegisterInt(VfpuRegisterType Type, int Size, VfpuRegisterInt Register)
 {
     if (Type == VfpuRegisterType.Vector && Size == 1) Type = VfpuRegisterType.Cell;
     return Parse(Size, VfpuConstants.GetRegisterNameByIndex(Type, Size, Register.Value));
     throw (new NotImplementedException("FromVfpuRegisterInt"));
 }
Beispiel #9
0
		private static IEnumerable<int> _GetIndices(uint Size, RegisterType RegisterType, VfpuRegisterInt Register, string Name = null)
		{
			if (Size < 1 || Size > 4) throw (new Exception(String.Format("Invalid Size {0} !€ [0, 4]", Size)));

			if (RegisterType == VfpuUtils.RegisterType.Vector && Size == 1) RegisterType = VfpuUtils.RegisterType.Cell;

			switch (RegisterType)
			{
				case RegisterType.Cell:
					{
						yield return (int)GetCellIndex(Register.S_MATRIX, Register.S_COLUMN, Register.S_ROW);
						yield break;
					}
				case RegisterType.Vector:
					for (uint Index = 0; Index < Size; Index++)
					{
						if (Register.RC_ROW_COLUMN == 1)
						{
							yield return (int)GetCellIndex(Register.RC_MATRIX, Register.RC_OFFSET + Index, Register.RC_LINE);
						}
						else
						{
							yield return (int)GetCellIndex(Register.RC_MATRIX, Register.RC_LINE, Register.RC_OFFSET + Index);
						}
					}
					yield break;
				case RegisterType.Matrix:
					{
						var Matrix = GetIndicesMatrix(Size, Register, Name);
						for (uint Row = 0; Row < Size; Row++)
						{
							for (uint Column = 0; Column < Size; Column++)
							{
								yield return Matrix[Column, Row];
							}
						}
					}
					yield break;
				default: throw (new NotImplementedException(String.Format("Invalid vfpu registry name {0}('{1}')", Register, Name)));
			}
		}
Beispiel #10
0
		public static int[,] GetIndicesMatrix(uint Size, VfpuRegisterInt Register, string Name = null)
		{
			var IndicesMatrix = new int[Size, Size];

			for (uint Row = 0; Row < Size; Row++)
			{
				for (uint Column = 0; Column < Size; Column++)
				{
					if (Register.M_TRANSPOSED != 0)
					{
						IndicesMatrix[Column, Row] = (int)GetCellIndex(Register.M_MATRIX, Register.M_ROW + Row, Register.M_COLUMN + Column);
					}
					else
					{
						IndicesMatrix[Column, Row] = (int)GetCellIndex(Register.M_MATRIX, Register.M_COLUMN + Column, Register.M_ROW + Row);
					}
				}
			}

			return IndicesMatrix;
		}
Beispiel #11
0
		public static int[] GetIndices(uint Size, RegisterType RegisterType, VfpuRegisterInt Register, string Name = null)
		{
			return _GetIndices(Size, RegisterType, Register, Name).ToArray();
		}