Lines Matching refs:Iex
1184 vex_printf("BIND-%d", e->Iex.Binder.binder);
1188 ppIRType(e->Iex.Get.ty);
1189 vex_printf("(%d)", e->Iex.Get.offset);
1193 ppIRRegArray(e->Iex.GetI.descr);
1195 ppIRExpr(e->Iex.GetI.ix);
1196 vex_printf(",%d]", e->Iex.GetI.bias);
1199 ppIRTemp(e->Iex.RdTmp.tmp);
1202 IRQop *qop = e->Iex.Qop.details;
1216 IRTriop *triop = e->Iex.Triop.details;
1228 ppIROp(e->Iex.Binop.op);
1230 ppIRExpr(e->Iex.Binop.arg1);
1232 ppIRExpr(e->Iex.Binop.arg2);
1236 ppIROp(e->Iex.Unop.op);
1238 ppIRExpr(e->Iex.Unop.arg);
1242 vex_printf( "LD%s:", e->Iex.Load.end==Iend_LE ? "le" : "be" );
1243 ppIRType(e->Iex.Load.ty);
1245 ppIRExpr(e->Iex.Load.addr);
1249 ppIRConst(e->Iex.Const.con);
1252 ppIRCallee(e->Iex.CCall.cee);
1254 for (i = 0; e->Iex.CCall.args[i] != NULL; i++) {
1255 IRExpr* arg = e->Iex.CCall.args[i];
1258 if (e->Iex.CCall.args[i+1] != NULL) {
1263 ppIRType(e->Iex.CCall.retty);
1267 ppIRExpr(e->Iex.ITE.cond);
1269 ppIRExpr(e->Iex.ITE.iftrue);
1271 ppIRExpr(e->Iex.ITE.iffalse);
1698 e->Iex.Binder.binder = binder;
1704 e->Iex.Get.offset = off;
1705 e->Iex.Get.ty = ty;
1711 e->Iex.GetI.descr = descr;
1712 e->Iex.GetI.ix = ix;
1713 e->Iex.GetI.bias = bias;
1719 e->Iex.RdTmp.tmp = tmp;
1732 e->Iex.Qop.details = qop;
1744 e->Iex.Triop.details = triop;
1750 e->Iex.Binop.op = op;
1751 e->Iex.Binop.arg1 = arg1;
1752 e->Iex.Binop.arg2 = arg2;
1758 e->Iex.Unop.op = op;
1759 e->Iex.Unop.arg = arg;
1765 e->Iex.Load.end = end;
1766 e->Iex.Load.ty = ty;
1767 e->Iex.Load.addr = addr;
1774 e->Iex.Const.con = con;
1780 e->Iex.CCall.cee = cee;
1781 e->Iex.CCall.retty = retty;
1782 e->Iex.CCall.args = args;
1788 e->Iex.ITE.cond = cond;
1789 e->Iex.ITE.iftrue = iftrue;
1790 e->Iex.ITE.iffalse = iffalse;
2182 return IRExpr_Get(e->Iex.Get.offset, e->Iex.Get.ty);
2184 return IRExpr_GetI(deepCopyIRRegArray(e->Iex.GetI.descr),
2185 deepCopyIRExpr(e->Iex.GetI.ix),
2186 e->Iex.GetI.bias);
2188 return IRExpr_RdTmp(e->Iex.RdTmp.tmp);
2190 IRQop* qop = e->Iex.Qop.details;
2199 IRTriop *triop = e->Iex.Triop.details;
2207 return IRExpr_Binop(e->Iex.Binop.op,
2208 deepCopyIRExpr(e->Iex.Binop.arg1),
2209 deepCopyIRExpr(e->Iex.Binop.arg2));
2211 return IRExpr_Unop(e->Iex.Unop.op,
2212 deepCopyIRExpr(e->Iex.Unop.arg));
2214 return IRExpr_Load(e->Iex.Load.end,
2215 e->Iex.Load.ty,
2216 deepCopyIRExpr(e->Iex.Load.addr));
2218 return IRExpr_Const(deepCopyIRConst(e->Iex.Const.con));
2220 return IRExpr_CCall(deepCopyIRCallee(e->Iex.CCall.cee),
2221 e->Iex.CCall.retty,
2222 deepCopyIRExprVec(e->Iex.CCall.args));
2225 return IRExpr_ITE(deepCopyIRExpr(e->Iex.ITE.cond),
2226 deepCopyIRExpr(e->Iex.ITE.iftrue),
2227 deepCopyIRExpr(e->Iex.ITE.iffalse));
3397 return e->Iex.Load.ty;
3399 return e->Iex.Get.ty;
3401 return e->Iex.GetI.descr->elemTy;
3403 return typeOfIRTemp(tyenv, e->Iex.RdTmp.tmp);
3405 return typeOfIRConst(e->Iex.Const.con);
3407 typeOfPrimop(e->Iex.Qop.details->op,
3411 typeOfPrimop(e->Iex.Triop.details->op,
3415 typeOfPrimop(e->Iex.Binop.op,
3419 typeOfPrimop(e->Iex.Unop.op,
3423 return e->Iex.CCall.retty;
3425 e = e->Iex.ITE.iffalse;
3427 /* return typeOfIRExpr(tyenv, e->Iex.ITE.iffalse); */
3507 case Iex_GetI: return isIRAtom(e->Iex.GetI.ix);
3509 case Iex_Qop: qop = e->Iex.Qop.details;
3515 case Iex_Triop: triop = e->Iex.Triop.details;
3521 isIRAtom(e->Iex.Binop.arg1)
3522 && isIRAtom(e->Iex.Binop.arg2));
3523 case Iex_Unop: return isIRAtom(e->Iex.Unop.arg);
3524 case Iex_Load: return isIRAtom(e->Iex.Load.addr);
3526 case Iex_CCall: for (i = 0; e->Iex.CCall.args[i]; i++)
3527 if (!isIRAtom(e->Iex.CCall.args[i]))
3531 isIRAtom(e->Iex.ITE.cond)
3532 && isIRAtom(e->Iex.ITE.iftrue)
3533 && isIRAtom(e->Iex.ITE.iffalse));
3674 useBeforeDef_Expr(bb,stmt,expr->Iex.GetI.ix,def_counts);
3677 useBeforeDef_Temp(bb,stmt,expr->Iex.RdTmp.tmp,def_counts);
3680 IRQop* qop = expr->Iex.Qop.details;
3688 IRTriop* triop = expr->Iex.Triop.details;
3695 useBeforeDef_Expr(bb,stmt,expr->Iex.Binop.arg1,def_counts);
3696 useBeforeDef_Expr(bb,stmt,expr->Iex.Binop.arg2,def_counts);
3699 useBeforeDef_Expr(bb,stmt,expr->Iex.Unop.arg,def_counts);
3702 useBeforeDef_Expr(bb,stmt,expr->Iex.Load.addr,def_counts);
3707 for (i = 0; expr->Iex.CCall.args[i]; i++) {
3708 IRExpr* arg = expr->Iex.CCall.args[i];
3720 useBeforeDef_Expr(bb,stmt,expr->Iex.ITE.cond,def_counts);
3721 useBeforeDef_Expr(bb,stmt,expr->Iex.ITE.iftrue,def_counts);
3722 useBeforeDef_Expr(bb,stmt,expr->Iex.ITE.iffalse,def_counts);
3823 tcExpr(bb,stmt, expr->Iex.GetI.ix, gWordTy );
3824 if (typeOfIRExpr(tyenv,expr->Iex.GetI.ix) != Ity_I32)
3826 if (!saneIRRegArray(expr->Iex.GetI.descr))
3831 IRQop* qop = expr->Iex.Qop.details;
3844 "Iex.Qop: wrong arity op\n"
3876 "Iex.Qop: arg tys don't match op tys\n"
3883 IRTriop *triop = expr->Iex.Triop.details;
3895 "Iex.Triop: wrong arity op\n"
3921 "Iex.Triop: arg tys don't match op tys\n"
3928 tcExpr(bb,stmt, expr->Iex.Binop.arg1, gWordTy );
3929 tcExpr(bb,stmt, expr->Iex.Binop.arg2, gWordTy );
3930 typeOfPrimop(expr->Iex.Binop.op,
3935 ppIROp(expr->Iex.Binop.op);
3938 "Iex.Binop: wrong arity op\n"
3941 ttarg1 = typeOfIRExpr(tyenv, expr->Iex.Binop.arg1);
3942 ttarg2 = typeOfIRExpr(tyenv, expr->Iex.Binop.arg2);
3945 ppIROp(expr->Iex.Binop.op);
3959 "Iex.Binop: arg tys don't match op tys\n"
3965 tcExpr(bb,stmt, expr->Iex.Unop.arg, gWordTy );
3966 typeOfPrimop(expr->Iex.Unop.op,
3970 sanityCheckFail(bb,stmt,"Iex.Unop: wrong arity op");
3971 if (t_arg1 != typeOfIRExpr(tyenv, expr->Iex.Unop.arg))
3972 sanityCheckFail(bb,stmt,"Iex.Unop: arg ty doesn't match op ty");
3975 tcExpr(bb,stmt, expr->Iex.Load.addr, gWordTy);
3976 if (typeOfIRExpr(tyenv, expr->Iex.Load.addr) != gWordTy)
3977 sanityCheckFail(bb,stmt,"Iex.Load.addr: not :: guest word type");
3978 if (expr->Iex.Load.end != Iend_LE && expr->Iex.Load.end != Iend_BE)
3979 sanityCheckFail(bb,stmt,"Iex.Load.end: bogus endianness");
3982 if (!saneIRCallee(expr->Iex.CCall.cee))
3983 sanityCheckFail(bb,stmt,"Iex.CCall.cee: bad IRCallee");
3984 if (expr->Iex.CCall.cee->regparms > countArgs(expr->Iex.CCall.args))
3985 sanityCheckFail(bb,stmt,"Iex.CCall.cee: #regparms > #args");
3986 for (i = 0; expr->Iex.CCall.args[i]; i++) {
3988 sanityCheckFail(bb,stmt,"Iex.CCall: > 32 args");
3989 IRExpr* arg = expr->Iex.CCall.args[i];
3991 sanityCheckFail(bb,stmt,"Iex.CCall.args: is VECRET/BBPTR");
3994 if (expr->Iex.CCall.retty == Ity_I1)
3995 sanityCheckFail(bb,stmt,"Iex.CCall.retty: cannot return :: Ity_I1");
3996 for (i = 0; expr->Iex.CCall.args[i]; i++)
3997 if (typeOfIRExpr(tyenv, expr->Iex.CCall.args[i]) == Ity_I1)
3998 sanityCheckFail(bb,stmt,"Iex.CCall.arg: arg :: Ity_I1");
4001 if (!saneIRConst(expr->Iex.Const.con))
4002 sanityCheckFail(bb,stmt,"Iex.Const.con: invalid const");
4005 tcExpr(bb,stmt, expr->Iex.ITE.cond, gWordTy);
4006 tcExpr(bb,stmt, expr->Iex.ITE.iftrue, gWordTy);
4007 tcExpr(bb,stmt, expr->Iex.ITE.iffalse, gWordTy);
4008 if (typeOfIRExpr(tyenv, expr->Iex.ITE.cond) != Ity_I1)
4009 sanityCheckFail(bb,stmt,"Iex.ITE.cond: cond :: Ity_I1");
4010 if (typeOfIRExpr(tyenv, expr->Iex.ITE.iftrue)
4011 != typeOfIRExpr(tyenv, expr->Iex.ITE.iffalse))
4012 sanityCheckFail(bb,stmt,"Iex.ITE: iftrue/iffalse mismatch");
4551 return toBool(a1->Iex.RdTmp.tmp == a2->Iex.RdTmp.tmp);
4553 return eqIRConst(a1->Iex.Const.con, a2->Iex.Const.con);