Lines Matching refs:eX
262 /* Flatten out 'ex' so it is atomic, returning a new expression with
266 static IRExpr* flatten_Expr ( IRSB* bb, IRExpr* ex )
270 IRType ty = typeOfIRExpr(bb->tyenv, ex);
273 switch (ex->tag) {
278 IRExpr_GetI(ex->Iex.GetI.descr,
279 flatten_Expr(bb, ex->Iex.GetI.ix),
280 ex->Iex.GetI.bias)));
286 IRStmt_WrTmp(t1, ex));
292 IRExpr_Qop(ex->Iex.Qop.op,
293 flatten_Expr(bb, ex->Iex.Qop.arg1),
294 flatten_Expr(bb, ex->Iex.Qop.arg2),
295 flatten_Expr(bb, ex->Iex.Qop.arg3),
296 flatten_Expr(bb, ex->Iex.Qop.arg4))));
302 IRExpr_Triop(ex->Iex.Triop.op,
303 flatten_Expr(bb, ex->Iex.Triop.arg1),
304 flatten_Expr(bb, ex->Iex.Triop.arg2),
305 flatten_Expr(bb, ex->Iex.Triop.arg3))));
311 IRExpr_Binop(ex->Iex.Binop.op,
312 flatten_Expr(bb, ex->Iex.Binop.arg1),
313 flatten_Expr(bb, ex->Iex.Binop.arg2))));
319 IRExpr_Unop(ex->Iex.Unop.op,
320 flatten_Expr(bb, ex->Iex.Unop.arg))));
326 IRExpr_Load(ex->Iex.Load.end,
327 ex->Iex.Load.ty,
328 flatten_Expr(bb, ex->Iex.Load.addr))));
332 newargs = shallowCopyIRExprVec(ex->Iex.CCall.args);
337 IRExpr_CCall(ex->Iex.CCall.cee,
338 ex->Iex.CCall.retty,
345 IRExpr_Mux0X(flatten_Expr(bb, ex->Iex.Mux0X.cond),
346 flatten_Expr(bb, ex->Iex.Mux0X.expr0),
347 flatten_Expr(bb, ex->Iex.Mux0X.exprX))));
353 if (ex->Iex.Const.con->tag == Ico_F64i) {
356 IRExpr_Const(ex->Iex.Const.con)));
360 return ex;
364 return ex;
368 ppIRExpr(ex);
1686 static IRExpr* subst_Expr ( IRExpr** env, IRExpr* ex )
1688 switch (ex->tag) {
1690 if (env[(Int)ex->Iex.RdTmp.tmp] != NULL) {
1691 return env[(Int)ex->Iex.RdTmp.tmp];
1694 return ex;
1699 return ex;
1702 vassert(isIRAtom(ex->Iex.GetI.ix));
1704 ex->Iex.GetI.descr,
1705 subst_Expr(env, ex->Iex.GetI.ix),
1706 ex->Iex.GetI.bias
1710 vassert(isIRAtom(ex->Iex.Qop.arg1));
1711 vassert(isIRAtom(ex->Iex.Qop.arg2));
1712 vassert(isIRAtom(ex->Iex.Qop.arg3));
1713 vassert(isIRAtom(ex->Iex.Qop.arg4));
1715 ex->Iex.Qop.op,
1716 subst_Expr(env, ex->Iex.Qop.arg1),
1717 subst_Expr(env, ex->Iex.Qop.arg2),
1718 subst_Expr(env, ex->Iex.Qop.arg3),
1719 subst_Expr(env, ex->Iex.Qop.arg4)
1723 vassert(isIRAtom(ex->Iex.Triop.arg1));
1724 vassert(isIRAtom(ex->Iex.Triop.arg2));
1725 vassert(isIRAtom(ex->Iex.Triop.arg3));
1727 ex->Iex.Triop.op,
1728 subst_Expr(env, ex->Iex.Triop.arg1),
1729 subst_Expr(env, ex->Iex.Triop.arg2),
1730 subst_Expr(env, ex->Iex.Triop.arg3)
1734 vassert(isIRAtom(ex->Iex.Binop.arg1));
1735 vassert(isIRAtom(ex->Iex.Binop.arg2));
1737 ex->Iex.Binop.op,
1738 subst_Expr(env, ex->Iex.Binop.arg1),
1739 subst_Expr(env, ex->Iex.Binop.arg2)
1743 vassert(isIRAtom(ex->Iex.Unop.arg));
1745 ex->Iex.Unop.op,
1746 subst_Expr(env, ex->Iex.Unop.arg)
1750 vassert(isIRAtom(ex->Iex.Load.addr));
1752 ex->Iex.Load.end,
1753 ex->Iex.Load.ty,
1754 subst_Expr(env, ex->Iex.Load.addr)
1759 IRExpr** args2 = shallowCopyIRExprVec(ex->Iex.CCall.args);
1765 ex->Iex.CCall.cee,
1766 ex->Iex.CCall.retty,
1772 vassert(isIRAtom(ex->Iex.Mux0X.cond));
1773 vassert(isIRAtom(ex->Iex.Mux0X.expr0));
1774 vassert(isIRAtom(ex->Iex.Mux0X.exprX));
1776 subst_Expr(env, ex->Iex.Mux0X.cond),
1777 subst_Expr(env, ex->Iex.Mux0X.expr0),
1778 subst_Expr(env, ex->Iex.Mux0X.exprX)
1782 vex_printf("\n\n"); ppIRExpr(ex);
2250 IRExpr* ex;
2260 ex = (*specHelper)( st->Ist.WrTmp.data->Iex.CCall.cee->name,
2263 if (!ex)
2270 = IRStmt_WrTmp(st->Ist.WrTmp.tmp, ex);
2276 ppIRExpr(ex);
2446 IRTemp eX;
2487 && a1->u.Mttt.eX == a2->u.Mttt.eX);
2523 IRExpr_RdTmp(ae->u.Mttt.eX));
2566 ae->u.Mttt.eX = subst_AvailExpr_Temp( env, ae->u.Mttt.eX );
2638 ae->u.Mttt.eX = e->Iex.Mux0X.exprX->Iex.RdTmp.tmp;