public XmmVariable _mm_rcp_ps(XmmVariable a) { var r = c.Xmm(); c.Rcpps(r, a); return(r); }
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]); }
public XmmVariable _mm_rsqrt_ss(XmmVariable a) { var r = c.Xmm(); c.Rsqrtss(r, a); return(r); }
public XmmVariable _mm_sqrt_ps(XmmVariable a) { var r = c.Xmm(); c.Sqrtps(r, a); return(r); }
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); }
internal YmmVariable(XmmVariable other) : base(other) { }
public XmmVariable _mm_div_ps(XmmVariable a, XmmVariable b) { c.Divps(a, b); return(a); }
public XmmVariable _mm_sub_ps(XmmVariable a, XmmVariable b) { c.Subps(a, b); return(a); }
public XmmVariable _mm_mul_ps(XmmVariable a, XmmVariable b) { c.Mulps(a, b); return(a); }
public XmmVariable _mm_add_ps(XmmVariable a, XmmVariable b) { c.Addps(a, b); return(a); }
public XmmVariable _mm_xor_ps(XmmVariable a, XmmVariable b) { c.Xorps(a, b); return(a); }
public XmmVariable _mm_andnot_ps(XmmVariable a, XmmVariable b) { c.Andnps(a, b); return(a); }
public XmmVariable _mm_max_ps(XmmVariable a, XmmVariable b) { c.Maxps(a, b); return(a); }
public XmmVariable _mm_min_ps(XmmVariable a, XmmVariable b) { c.Minps(a, b); return(a); }