Exemple #1
0
            public XmmVariable _mm_rcp_ps(XmmVariable a)
            {
                var r = c.Xmm();

                c.Rcpps(r, a);
                return(r);
            }
Exemple #2
0
        protected override void Compile(CodeContext c)
        {
            const int cnt = 7;

            var p  = c.IntPtr("p");
            var xv = new XmmVariable[cnt];

            int i;

            for (i = 0; i < cnt; i++)
            {
                xv[i] = c.XmmSd("xv" + i);
                c.SetArgument(i, xv[i]);
            }
            c.SetArgument(7, p);

            c.Addsd(xv[0], xv[1]);
            c.Addsd(xv[0], xv[2]);
            c.Addsd(xv[0], xv[3]);
            c.Addsd(xv[0], xv[4]);
            c.Addsd(xv[0], xv[5]);
            c.Addsd(xv[0], xv[6]);

            c.Movsd(Memory.Ptr(p), xv[0]);
        }
Exemple #3
0
            public XmmVariable _mm_rsqrt_ss(XmmVariable a)
            {
                var r = c.Xmm();

                c.Rsqrtss(r, a);
                return(r);
            }
Exemple #4
0
            public XmmVariable _mm_sqrt_ps(XmmVariable a)
            {
                var r = c.Xmm();

                c.Sqrtps(r, a);
                return(r);
            }
Exemple #5
0
        internal TV CreateVariable <TV>(VariableType type, string name = null) where TV : Variable
        {
            type = type.GetMappedType();
            if (type.IsInvalid())
            {
                throw new ArgumentException();
            }
            var          varInfo = type.GetVariableInfo();
            VariableData varData;
            Variable     var;

            switch (type)
            {
            case VariableType.Int8:
            case VariableType.UInt8:
            case VariableType.Int16:
            case VariableType.UInt16:
            case VariableType.Int32:
            case VariableType.UInt32:
            case VariableType.Int64:
            case VariableType.UInt64:
            case VariableType.IntPtr:
            case VariableType.UIntPtr:
                if (typeof(TV) != typeof(GpVariable))
                {
                    throw new ArgumentException();
                }
                varData = CreateVariableData(type, varInfo, name);
                var     = new GpVariable((GpVariableType)type, varData.Id);
                break;

            case VariableType.Fp32:
            case VariableType.Fp64:
                if (typeof(TV) != typeof(FpVariable))
                {
                    throw new ArgumentException();
                }
                varData = CreateVariableData(type, varInfo, name);
                var     = new FpVariable((FpVariableType)type, varData.Id);
                break;

            case VariableType.Xmm:
            case VariableType.XmmSs:
            case VariableType.XmmSd:
                if (typeof(TV) != typeof(XmmVariable))
                {
                    throw new ArgumentException();
                }
                varData = CreateVariableData(type, varInfo, name);
                var     = new XmmVariable((XmmVariableType)type, varData.Id);
                break;

            default:
                throw new ArgumentException();
            }
            return((TV)var);
        }
Exemple #6
0
 internal YmmVariable(XmmVariable other)
     : base(other)
 {
 }
Exemple #7
0
 public XmmVariable _mm_div_ps(XmmVariable a, XmmVariable b)
 {
     c.Divps(a, b);
     return(a);
 }
Exemple #8
0
 public XmmVariable _mm_sub_ps(XmmVariable a, XmmVariable b)
 {
     c.Subps(a, b);
     return(a);
 }
Exemple #9
0
 public XmmVariable _mm_mul_ps(XmmVariable a, XmmVariable b)
 {
     c.Mulps(a, b);
     return(a);
 }
Exemple #10
0
 public XmmVariable _mm_add_ps(XmmVariable a, XmmVariable b)
 {
     c.Addps(a, b);
     return(a);
 }
Exemple #11
0
 public XmmVariable _mm_xor_ps(XmmVariable a, XmmVariable b)
 {
     c.Xorps(a, b);
     return(a);
 }
Exemple #12
0
 public XmmVariable _mm_andnot_ps(XmmVariable a, XmmVariable b)
 {
     c.Andnps(a, b);
     return(a);
 }
Exemple #13
0
 public XmmVariable _mm_max_ps(XmmVariable a, XmmVariable b)
 {
     c.Maxps(a, b);
     return(a);
 }
Exemple #14
0
 public XmmVariable _mm_min_ps(XmmVariable a, XmmVariable b)
 {
     c.Minps(a, b);
     return(a);
 }