void operator () (Eval &eval,StepId dep,Expr::Mul *ptr) { auto step=eval.createStep(MulStep(ret),dep); eval.createStep(ExprStep(ptr->arg1,step.obj.arg1),step.id); eval.createStep(ExprStep(ptr->arg2,step.obj.arg2),step.id); }
void operator () (Eval &eval,StepId dep,Expr::Var *ptr) { ulen index=ptr->index; Var &var=eval->table[index]; #if 1 var.gate->createStep(GetVarStep(var.value,ret),dep); #else auto step=eval.createStep(GetVarStep(var.value,ret),dep); var.gate->delay(step.id); #endif }
void operator () (Eval &eval,StepId dep,Expr::Neg *ptr) { auto step=eval.createStep(NegStep(ret),dep); eval.createStep(ExprStep(ptr->arg,step.obj.arg),step.id); }