Lines Matching full:iex
1271 vex_printf("BIND-%d", e->Iex.Binder.binder);
1275 ppIRType(e->Iex.Get.ty);
1276 vex_printf("(%d)", e->Iex.Get.offset);
1280 ppIRRegArray(e->Iex.GetI.descr);
1282 ppIRExpr(e->Iex.GetI.ix);
1283 vex_printf(",%d]", e->Iex.GetI.bias);
1286 ppIRTemp(e->Iex.RdTmp.tmp);
1289 const IRQop *qop = e->Iex.Qop.details;
1303 const IRTriop *triop = e->Iex.Triop.details;
1315 ppIROp(e->Iex.Binop.op);
1317 ppIRExpr(e->Iex.Binop.arg1);
1319 ppIRExpr(e->Iex.Binop.arg2);
1323 ppIROp(e->Iex.Unop.op);
1325 ppIRExpr(e->Iex.Unop.arg);
1329 vex_printf( "LD%s:", e->Iex.Load.end==Iend_LE ? "le" : "be" );
1330 ppIRType(e->Iex.Load.ty);
1332 ppIRExpr(e->Iex.Load.addr);
1336 ppIRConst(e->Iex.Const.con);
1339 ppIRCallee(e->Iex.CCall.cee);
1341 for (i = 0; e->Iex.CCall.args[i] != NULL; i++) {
1342 IRExpr* arg = e->Iex.CCall.args[i];
1345 if (e->Iex.CCall.args[i+1] != NULL) {
1350 ppIRType(e->Iex.CCall.retty);
1354 ppIRExpr(e->Iex.ITE.cond);
1356 ppIRExpr(e->Iex.ITE.iftrue);
1358 ppIRExpr(e->Iex.ITE.iffalse);
1791 e->Iex.Binder.binder = binder;
1797 e->Iex.Get.offset = off;
1798 e->Iex.Get.ty = ty;
1804 e->Iex.GetI.descr = descr;
1805 e->Iex.GetI.ix = ix;
1806 e->Iex.GetI.bias = bias;
1812 e->Iex.RdTmp.tmp = tmp;
1825 e->Iex.Qop.details = qop;
1837 e->Iex.Triop.details = triop;
1843 e->Iex.Binop.op = op;
1844 e->Iex.Binop.arg1 = arg1;
1845 e->Iex.Binop.arg2 = arg2;
1851 e->Iex.Unop.op = op;
1852 e->Iex.Unop.arg = arg;
1858 e->Iex.Load.end = end;
1859 e->Iex.Load.ty = ty;
1860 e->Iex.Load.addr = addr;
1867 e->Iex.Const.con = con;
1873 e->Iex.CCall.cee = cee;
1874 e->Iex.CCall.retty = retty;
1875 e->Iex.CCall.args = args;
1881 e->Iex.ITE.cond = cond;
1882 e->Iex.ITE.iftrue = iftrue;
1883 e->Iex.ITE.iffalse = iffalse;
2280 return IRExpr_Get(e->Iex.Get.offset, e->Iex.Get.ty);
2282 return IRExpr_GetI(deepCopyIRRegArray(e->Iex.GetI.descr),
2283 deepCopyIRExpr(e->Iex.GetI.ix),
2284 e->Iex.GetI.bias);
2286 return IRExpr_RdTmp(e->Iex.RdTmp.tmp);
2288 const IRQop* qop = e->Iex.Qop.details;
2297 const IRTriop *triop = e->Iex.Triop.details;
2305 return IRExpr_Binop(e->Iex.Binop.op,
2306 deepCopyIRExpr(e->Iex.Binop.arg1),
2307 deepCopyIRExpr(e->Iex.Binop.arg2));
2309 return IRExpr_Unop(e->Iex.Unop.op,
2310 deepCopyIRExpr(e->Iex.Unop.arg));
2312 return IRExpr_Load(e->Iex.Load.end,
2313 e->Iex.Load.ty,
2314 deepCopyIRExpr(e->Iex.Load.addr));
2316 return IRExpr_Const(deepCopyIRConst(e->Iex.Const.con));
2318 return IRExpr_CCall(deepCopyIRCallee(e->Iex.CCall.cee),
2319 e->Iex.CCall.retty,
2320 deepCopyIRExprVec(e->Iex.CCall.args));
2323 return IRExpr_ITE(deepCopyIRExpr(e->Iex.ITE.cond),
2324 deepCopyIRExpr(e->Iex.ITE.iftrue),
2325 deepCopyIRExpr(e->Iex.ITE.iffalse));
2333 return IRExpr_Binder(e->Iex.Binder.binder);
3551 return e->Iex.Load.ty;
3553 return e->Iex.Get.ty;
3555 return e->Iex.GetI.descr->elemTy;
3557 return typeOfIRTemp(tyenv, e->Iex.RdTmp.tmp);
3559 return typeOfIRConst(e->Iex.Const.con);
3561 typeOfPrimop(e->Iex.Qop.details->op,
3565 typeOfPrimop(e->Iex.Triop.details->op,
3569 typeOfPrimop(e->Iex.Binop.op,
3573 typeOfPrimop(e->Iex.Unop.op,
3577 return e->Iex.CCall.retty;
3579 e = e->Iex.ITE.iffalse;
3581 /* return typeOfIRExpr(tyenv, e->Iex.ITE.iffalse); */
3660 case Iex_GetI: return isIRAtom(e->Iex.GetI.ix);
3662 case Iex_Qop: qop = e->Iex.Qop.details;
3668 case Iex_Triop: triop = e->Iex.Triop.details;
3674 isIRAtom(e->Iex.Binop.arg1)
3675 && isIRAtom(e->Iex.Binop.arg2));
3676 case Iex_Unop: return isIRAtom(e->Iex.Unop.arg);
3677 case Iex_Load: return isIRAtom(e->Iex.Load.addr);
3679 case Iex_CCall: for (i = 0; e->Iex.CCall.args[i]; i++)
3680 if (!isIRAtom(e->Iex.CCall.args[i]))
3684 isIRAtom(e->Iex.ITE.cond)
3685 && isIRAtom(e->Iex.ITE.iftrue)
3686 && isIRAtom(e->Iex.ITE.iffalse));
3831 useBeforeDef_Expr(bb,stmt,expr->Iex.GetI.ix,def_counts);
3834 useBeforeDef_Temp(bb,stmt,expr->Iex.RdTmp.tmp,def_counts);
3837 const IRQop* qop = expr->Iex.Qop.details;
3845 const IRTriop* triop = expr->Iex.Triop.details;
3852 useBeforeDef_Expr(bb,stmt,expr->Iex.Binop.arg1,def_counts);
3853 useBeforeDef_Expr(bb,stmt,expr->Iex.Binop.arg2,def_counts);
3856 useBeforeDef_Expr(bb,stmt,expr->Iex.Unop.arg,def_counts);
3859 useBeforeDef_Expr(bb,stmt,expr->Iex.Load.addr,def_counts);
3864 for (i = 0; expr->Iex.CCall.args[i]; i++) {
3865 const IRExpr* arg = expr->Iex.CCall.args[i];
3877 useBeforeDef_Expr(bb,stmt,expr->Iex.ITE.cond,def_counts);
3878 useBeforeDef_Expr(bb,stmt,expr->Iex.ITE.iftrue,def_counts);
3879 useBeforeDef_Expr(bb,stmt,expr->Iex.ITE.iffalse,def_counts);
3981 tcExpr(bb,stmt, expr->Iex.GetI.ix, gWordTy );
3982 if (typeOfIRExpr(tyenv,expr->Iex.GetI.ix) != Ity_I32)
3984 if (!saneIRRegArray(expr->Iex.GetI.descr))
3989 const IRQop* qop = expr->Iex.Qop.details;
4002 "Iex.Qop: wrong arity op\n"
4034 "Iex.Qop: arg tys don't match op tys\n"
4041 const IRTriop *triop = expr->Iex.Triop.details;
4053 "Iex.Triop: wrong arity op\n"
4079 "Iex.Triop: arg tys don't match op tys\n"
4086 tcExpr(bb,stmt, expr->Iex.Binop.arg1, gWordTy );
4087 tcExpr(bb,stmt, expr->Iex.Binop.arg2, gWordTy );
4088 typeOfPrimop(expr->Iex.Binop.op,
4093 ppIROp(expr->Iex.Binop.op);
4096 "Iex.Binop: wrong arity op\n"
4099 ttarg1 = typeOfIRExpr(tyenv, expr->Iex.Binop.arg1);
4100 ttarg2 = typeOfIRExpr(tyenv, expr->Iex.Binop.arg2);
4103 ppIROp(expr->Iex.Binop.op);
4117 "Iex.Binop: arg tys don't match op tys\n"
4123 tcExpr(bb,stmt, expr->Iex.Unop.arg, gWordTy );
4124 typeOfPrimop(expr->Iex.Unop.op,
4128 sanityCheckFail(bb,stmt,"Iex.Unop: wrong arity op");
4129 if (t_arg1 != typeOfIRExpr(tyenv, expr->Iex.Unop.arg))
4130 sanityCheckFail(bb,stmt,"Iex.Unop: arg ty doesn't match op ty");
4133 tcExpr(bb,stmt, expr->Iex.Load.addr, gWordTy);
4134 if (typeOfIRExpr(tyenv, expr->Iex.Load.addr) != gWordTy)
4135 sanityCheckFail(bb,stmt,"Iex.Load.addr: not :: guest word type");
4136 if (expr->Iex.Load.end != Iend_LE && expr->Iex.Load.end != Iend_BE)
4137 sanityCheckFail(bb,stmt,"Iex.Load.end: bogus endianness");
4140 if (!saneIRCallee(expr->Iex.CCall.cee))
4141 sanityCheckFail(bb,stmt,"Iex.CCall.cee: bad IRCallee");
4142 if (expr->Iex.CCall.cee->regparms > countArgs(expr->Iex.CCall.args))
4143 sanityCheckFail(bb,stmt,"Iex.CCall.cee: #regparms > #args");
4144 for (i = 0; expr->Iex.CCall.args[i]; i++) {
4146 sanityCheckFail(bb,stmt,"Iex.CCall: > 32 args");
4147 IRExpr* arg = expr->Iex.CCall.args[i];
4149 sanityCheckFail(bb,stmt,"Iex.CCall.args: is VECRET/BBPTR");
4152 if (expr->Iex.CCall.retty == Ity_I1)
4153 sanityCheckFail(bb,stmt,"Iex.CCall.retty: cannot return :: Ity_I1");
4154 for (i = 0; expr->Iex.CCall.args[i]; i++)
4155 if (typeOfIRExpr(tyenv, expr->Iex.CCall.args[i]) == Ity_I1)
4156 sanityCheckFail(bb,stmt,"Iex.CCall.arg: arg :: Ity_I1");
4159 if (!saneIRConst(expr->Iex.Const.con))
4160 sanityCheckFail(bb,stmt,"Iex.Const.con: invalid const");
4163 tcExpr(bb,stmt, expr->Iex.ITE.cond, gWordTy);
4164 tcExpr(bb,stmt, expr->Iex.ITE.iftrue, gWordTy);
4165 tcExpr(bb,stmt, expr->Iex.ITE.iffalse, gWordTy);
4166 if (typeOfIRExpr(tyenv, expr->Iex.ITE.cond) != Ity_I1)
4167 sanityCheckFail(bb,stmt,"Iex.ITE.cond: cond :: Ity_I1");
4168 if (typeOfIRExpr(tyenv, expr->Iex.ITE.iftrue)
4169 != typeOfIRExpr(tyenv, expr->Iex.ITE.iffalse))
4170 sanityCheckFail(bb,stmt,"Iex.ITE: iftrue/iffalse mismatch");
4709 return toBool(a1->Iex.RdTmp.tmp == a2->Iex.RdTmp.tmp);
4711 return eqIRConst(a1->Iex.Const.con, a2->Iex.Const.con);