Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public static AVec VectorInsertDouble(double Value, AVec Vector, int Index)
 {
     return(AVec.InsertDouble(Vector, Index, Value));
 }