private static AVec Fsub(AVec LHS, AVec RHS, int Size, int Bytes) { AVec Res = new AVec(); int Elems = Bytes >> Size; if (Size == 0) { for (int Index = 0; Index < Elems; Index++) { float L = LHS.ExtractSingle(Index); float R = RHS.ExtractSingle(Index); Res = AVec.InsertSingle(Res, Index, L - R); } } else { for (int Index = 0; Index < Elems; Index++) { double L = LHS.ExtractDouble(Index); double R = RHS.ExtractDouble(Index); Res = AVec.InsertDouble(Res, Index, L - R); } } return(Res); }
private static AVec Scvtf_V(AVec Vector, int Size, int Bytes) { AVec Res = new AVec(); int Elems = Bytes >> Size; if (Size == 0) { for (int Index = 0; Index < Elems; Index++) { int Value = (int)ExtractSVec(Vector, Index, Size + 2); Res = AVec.InsertSingle(Res, Index, Value); } } else { for (int Index = 0; Index < Elems; Index++) { long Value = ExtractSVec(Vector, Index, Size + 2); Res = AVec.InsertDouble(Res, Index, Value); } } return(Res); }
private static AVec Fmla_Ve(AVec Res, AVec LHS, AVec RHS, int SIdx, int Size, int Bytes) { int Elems = Bytes >> Size; if (Size == 0) { float R = RHS.ExtractSingle(SIdx); for (int Index = 0; Index < Elems; Index++) { float L = LHS.ExtractSingle(Index); float Addend = Res.ExtractSingle(Index); Res = AVec.InsertSingle(Res, Index, Addend + L * R); } } else { double R = RHS.ExtractDouble(SIdx); for (int Index = 0; Index < Elems; Index++) { double L = LHS.ExtractDouble(Index); double Addend = Res.ExtractDouble(Index); Res = AVec.InsertDouble(Res, Index, Addend + L * R); } } return(Res); }
public static AVec VectorInsertDouble(double Value, AVec Vector, int Index) { return(AVec.InsertDouble(Vector, Index, Value)); }