public AstNodeStm Vdet()
        {
            var v1 = Vec(Vs, VType.VFloat, 2);
            var v2 = Vec(Vt, VType.VFloat, 2);

            return(CelVd.Set(v1[0] * v2[1] - v1[1] * v2[0], _pc));
        }
        public AstNodeStm Vhdp()
        {
            var vectorSize = (uint)OneTwo;

            return(CelVd.Set(_Aggregate(0f, (aggregate, index) =>
                                        aggregate + VecVt[index] * ((index == vectorSize - 1) ? 1f : VecVs[index])
                                        ), _pc));
        }
 public AstNodeStm Mfv() => _ast.AssignGPR_F(Rt, CelVd.Get());
 public AstNodeStm Mtv() => CelVd.Set(_ast.GPR_f(Rt), _pc);
 public AstNodeStm Vavg() =>
 CelVd.Set(_Aggregate(0f, (value, index) => value + VecVs[index]) / (float)OneTwo, _pc);
 public AstNodeStm Vfad() => CelVd.Set(_Aggregate(0f, (value, index) => value + VecVs[index]), _pc);
 public AstNodeStm Vdot() => CelVd.Set(
     _Aggregate(0f, OneTwo, (aggregated, index) => aggregated + (VecVs[index] * VecVt[index])), _pc);
 public AstNodeStm Vcst() =>
 CelVd.Set(VfpuConstants.GetConstantValueByIndex((int)_instruction.Imm5).Value, _pc);