Lines Matching defs:ex
274 /* Flatten out 'ex' so it is atomic, returning a new expression with
278 static IRExpr* flatten_Expr ( IRSB* bb, IRExpr* ex )
282 IRType ty = typeOfIRExpr(bb->tyenv, ex);
285 switch (ex->tag) {
290 IRExpr_GetI(ex->Iex.GetI.descr,
291 flatten_Expr(bb, ex->Iex.GetI.ix),
292 ex->Iex.GetI.bias)));
298 IRStmt_WrTmp(t1, ex));
302 IRQop* qop = ex->Iex.Qop.details;
314 IRTriop* triop = ex->Iex.Triop.details;
327 IRExpr_Binop(ex->Iex.Binop.op,
328 flatten_Expr(bb, ex->Iex.Binop.arg1),
329 flatten_Expr(bb, ex->Iex.Binop.arg2))));
335 IRExpr_Unop(ex->Iex.Unop.op,
336 flatten_Expr(bb, ex->Iex.Unop.arg))));
342 IRExpr_Load(ex->Iex.Load.end,
343 ex->Iex.Load.ty,
344 flatten_Expr(bb, ex->Iex.Load.addr))));
348 newargs = shallowCopyIRExprVec(ex->Iex.CCall.args);
353 IRExpr_CCall(ex->Iex.CCall.cee,
354 ex->Iex.CCall.retty,
361 IRExpr_Mux0X(flatten_Expr(bb, ex->Iex.Mux0X.cond),
362 flatten_Expr(bb, ex->Iex.Mux0X.expr0),
363 flatten_Expr(bb, ex->Iex.Mux0X.exprX))));
369 if (ex->Iex.Const.con->tag == Ico_F64i) {
372 IRExpr_Const(ex->Iex.Const.con)));
376 return ex;
380 return ex;
384 ppIRExpr(ex);
2225 static IRExpr* subst_Expr ( IRExpr** env, IRExpr* ex )
2227 switch (ex->tag) {
2229 if (env[(Int)ex->Iex.RdTmp.tmp] != NULL) {
2230 IRExpr *rhs = env[(Int)ex->Iex.RdTmp.tmp];
2238 return ex;
2242 return ex;
2245 vassert(isIRAtom(ex->Iex.GetI.ix));
2247 ex->Iex.GetI.descr,
2248 subst_Expr(env, ex->Iex.GetI.ix),
2249 ex->Iex.GetI.bias
2253 IRQop* qop = ex->Iex.Qop.details;
2268 IRTriop* triop = ex->Iex.Triop.details;
2281 vassert(isIRAtom(ex->Iex.Binop.arg1));
2282 vassert(isIRAtom(ex->Iex.Binop.arg2));
2284 ex->Iex.Binop.op,
2285 subst_Expr(env, ex->Iex.Binop.arg1),
2286 subst_Expr(env, ex->Iex.Binop.arg2)
2290 vassert(isIRAtom(ex->Iex.Unop.arg));
2292 ex->Iex.Unop.op,
2293 subst_Expr(env, ex->Iex.Unop.arg)
2297 vassert(isIRAtom(ex->Iex.Load.addr));
2299 ex->Iex.Load.end,
2300 ex->Iex.Load.ty,
2301 subst_Expr(env, ex->Iex.Load.addr)
2306 IRExpr** args2 = shallowCopyIRExprVec(ex->Iex.CCall.args);
2312 ex->Iex.CCall.cee,
2313 ex->Iex.CCall.retty,
2319 vassert(isIRAtom(ex->Iex.Mux0X.cond));
2320 vassert(isIRAtom(ex->Iex.Mux0X.expr0));
2321 vassert(isIRAtom(ex->Iex.Mux0X.exprX));
2323 subst_Expr(env, ex->Iex.Mux0X.cond),
2324 subst_Expr(env, ex->Iex.Mux0X.expr0),
2325 subst_Expr(env, ex->Iex.Mux0X.exprX)
2329 vex_printf("\n\n"); ppIRExpr(ex);
2808 IRExpr* ex;
2818 ex = (*specHelper)( st->Ist.WrTmp.data->Iex.CCall.cee->name,
2821 if (!ex)
2828 = IRStmt_WrTmp(st->Ist.WrTmp.tmp, ex);
2834 ppIRExpr(ex);
3069 IRTemp eX;
3117 && a1->u.Mttt.eX == a2->u.Mttt.eX);
3170 IRExpr_RdTmp(ae->u.Mttt.eX));
3232 ae->u.Mttt.eX = subst_AvailExpr_Temp( env, ae->u.Mttt.eX );
3314 ae->u.Mttt.eX = e->Iex.Mux0X.exprX->Iex.RdTmp.tmp;