Home | History | Annotate | Download | only in priv

Lines Matching refs:Iex

255       return toBool( isIRAtom(e->Iex.Binop.arg1) 
256 && isIRAtom(e->Iex.Binop.arg2) );
258 return isIRAtom(e->Iex.Load.addr);
278 IRExpr_GetI(ex->Iex.GetI.descr,
279 flatten_Expr(bb, ex->Iex.GetI.ix),
280 ex->Iex.GetI.bias)));
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)));
588 key = (HWord)mk_key_GetPut( get->Iex.Get.offset,
589 get->Iex.Get.ty );
599 == st->Ist.WrTmp.data->Iex.Get.ty );
692 key = mk_key_GetPut ( e->Iex.Get.offset, e->Iex.Get.ty );
696 key = mk_key_GetIPutI ( e->Iex.GetI.descr );
893 && e1->Iex.RdTmp.tmp == e2->Iex.RdTmp.tmp );
900 && e1->Iex.Const.con->tag == Ico_U32
901 && e2->Iex.Const.con->tag == Ico_U32
902 && e1->Iex.Const.con->Ico.U32
903 == e2->Iex.Const.con->Ico.U32 );
924 && e->Iex.Const.con->tag == Ico_U32
925 && e->Iex.Const.con->Ico.U32 == 0);
932 && e->Iex.Const.con->tag == Ico_U64
933 && e->Iex.Const.con->Ico.U64 == 0);
1008 && e->Iex.Unop.arg->tag == Iex_Const) {
1009 switch (e->Iex.Unop.op) {
1012 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1017 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1022 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1028 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1033 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1038 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1043 e->Iex.Unop.arg->Iex.Const.con->Ico.U1
1048 /* signed */ Int s32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U8;
1055 /* signed */ Int s32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
1063 0xFFULL & e->Iex.Unop.arg->Iex.Const.con->Ico.U8));
1067 0xFFFFULL & e->Iex.Unop.arg->Iex.Const.con->Ico.U16));
1071 0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8));
1074 /* signed */ Short s16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U8;
1082 0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8));
1086 0xFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U16));
1090 0xFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U32)));
1094 0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U32)));
1098 1 == (1 & e->Iex.Unop.arg->Iex.Const.con->Ico.U32)
1103 1 == (1 & e->Iex.Unop.arg->Iex.Const.con->Ico.U64)
1109 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U64)));
1113 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U32)));
1117 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U16))));
1121 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U8))));
1126 notBool(e->Iex.Unop.arg->Iex.Const.con->Ico.U1)));
1130 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1136 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1142 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1148 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1156 & e->Iex.Unop.arg->Iex.Const.con->Ico.U32));
1159 /* signed */ Long s64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
1166 /* signed */ Long s64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
1174 UShort w16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
1180 UShort w16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16;
1190 (0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8)
1196 (0xFFFFFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U32)
1201 0ULL != e->Iex.Unop.arg->Iex.Const.con->Ico.U64
1206 UInt w32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
1214 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1223 UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
1231 ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1239 UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32;
1245 ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64;
1258 if (e->Iex.Binop.arg1->tag == Iex_Const
1259 && e->Iex.Binop.arg2->tag == Iex_Const) {
1261 switch (e->Iex.Binop.op) {
1266 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
1267 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))));
1271 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16
1272 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U16))));
1276 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1277 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)));
1281 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1282 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)));
1288 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
1289 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))));
1293 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16
1294 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U16))));
1298 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1299 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)));
1303 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1304 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)));
1310 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
1311 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))));
1315 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16
1316 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U16))));
1320 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1321 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)));
1325 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1326 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)));
1332 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
1333 + e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))));
1337 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1338 + e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)));
1342 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1343 + e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)));
1349 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
1350 - e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))));
1354 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1355 - e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)));
1359 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1360 - e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)));
1365 UInt u32a = e->Iex.Binop.arg1->Iex.Const.con->Ico.U32;
1366 UInt u32b = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32;
1375 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1376 * e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)));
1380 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1381 * e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)));
1386 UInt u32a = e->Iex.Binop.arg1->Iex.Const.con->Ico.U32;
1387 UInt u32b = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32;
1400 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1401 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
1404 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1408 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1409 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
1412 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1420 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1421 s32 = (Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32);
1422 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
1432 Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1433 s64 = (Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64);
1434 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
1446 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1447 u32 = (UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32);
1448 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
1458 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1459 u64 = (ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64);
1460 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
1471 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1472 == e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))));
1476 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1477 == e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))));
1483 ((0xFF & e->Iex.Binop.arg1->Iex.Const.con->Ico.U8)
1484 != (0xFF & e->Iex.Binop.arg2->Iex.Const.con->Ico.U8)))));
1488 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32
1489 != e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))));
1493 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64
1494 != e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))));
1500 ((UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
1501 <= (UInt)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
1505 ((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
1506 <= (ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
1512 ((Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
1513 <= (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
1517 ((Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
1518 <= (Long)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
1524 ((Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
1525 < (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
1529 ((Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
1530 < (Long)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
1536 ((UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)
1537 < (UInt)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))));
1541 ((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64)
1542 < (ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))));
1548 UInt u32a = e->Iex.Binop.arg1->Iex.Const.con->Ico.U32;
1549 UInt u32b = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32;
1566 (((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32)) << 32)
1567 | ((ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))
1586 if ((e->Iex.Binop.op == Iop_Shl64 || e->Iex.Binop.op == Iop_Shr64)
1587 && e->Iex.Binop.arg2->tag == Iex_Const
1588 && e->Iex.Binop.arg2->Iex.Const.con->Ico.U8 == 0) {
1589 e2 = e->Iex.Binop.arg1;
1593 if ((e->Iex.Binop.op == Iop_Shl32 || e->Iex.Binop.op == Iop_Shr32)
1594 && e->Iex.Binop.arg2->tag == Iex_Const
1595 && e->Iex.Binop.arg2->Iex.Const.con->Ico.U8 == 0) {
1596 e2 = e->Iex.Binop.arg1;
1600 if ((e->Iex.Binop.op == Iop_Or8)
1601 && e->Iex.Binop.arg2->tag == Iex_Const
1602 && e->Iex.Binop.arg2->Iex.Const.con->Ico.U8 == 0) {
1603 e2 = e->Iex.Binop.arg1;
1607 if ((e->Iex.Binop.op == Iop_Or16)
1608 && e->Iex.Binop.arg2->tag == Iex_Const
1609 && e->Iex.Binop.arg2->Iex.Const.con->Ico.U16 == 0) {
1610 e2 = e->Iex.Binop.arg1;
1615 if (e->Iex.Binop.op == Iop_Add32
1616 || e->Iex.Binop.op == Iop_Or32 || e->Iex.Binop.op == Iop_Max32U) {
1617 if (isZeroU32(e->Iex.Binop.arg2))
1618 e2 = e->Iex.Binop.arg1;
1619 else if (isZeroU32(e->Iex.Binop.arg1))
1620 e2 = e->Iex.Binop.arg2;
1624 if (e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg2)) {
1625 e2 = e->Iex.Binop.arg1;
1632 if (e->Iex.Binop.op == Iop_Add32
1633 && e->Iex.Binop.arg1->tag == Iex_RdTmp
1634 && e->Iex.Binop.arg2->tag == Iex_RdTmp
1635 && e->Iex.Binop.arg1->Iex.RdTmp.tmp
1636 == e->Iex.Binop.arg2->Iex.RdTmp.tmp) {
1638 e->Iex.Binop.arg1,
1643 if (e->Iex.Binop.op == Iop_Add64
1644 && e->Iex.Binop.arg1->tag == Iex_RdTmp
1645 && e->Iex.Binop.arg2->tag == Iex_RdTmp
1646 && e->Iex.Binop.arg1->Iex.RdTmp.tmp
1647 == e->Iex.Binop.arg2->Iex.RdTmp.tmp) {
1649 e->Iex.Binop.arg1,
1654 if (e->Iex.Binop.op == Iop_Add8
1655 && e->Iex.Binop.arg1->tag == Iex_RdTmp
1656 && e->Iex.Binop.arg2->tag == Iex_RdTmp
1657 && e->Iex.Binop.arg1->Iex.RdTmp.tmp
1658 == e->Iex.Binop.arg2->Iex.RdTmp.tmp) {
1660 e->Iex.Binop.arg1,
1667 if (e->Iex.Binop.op == Iop_Add64 || e->Iex.Binop.op == Iop_Or64) {
1668 if (isZeroU64(e->Iex.Binop.arg2))
1669 e2 = e->Iex.Binop.arg1;
1670 else if (isZeroU64(e->Iex.Binop.arg1))
1671 e2 = e->Iex.Binop.arg2;
1675 if (e->Iex.Binop.op == Iop_And32
1676 && e->Iex.Binop.arg2->tag == Iex_Const
1677 && e->Iex.Binop.arg2->Iex.Const.con->Ico.U32 == 0xFFFFFFFF) {
1678 e2 = e->Iex.Binop.arg1;
1682 if (e->Iex.Binop.op == Iop_And32
1683 && e->Iex.Binop.arg2->tag == Iex_Const
1684 && e->Iex.Binop.arg2->Iex.Const.con->Ico.U32 == 0) {
1689 if ((e->Iex.Binop.op == Iop_And32 || e->Iex.Binop.op == Iop_Shl32)
1690 && e->Iex.Binop.arg1->tag == Iex_Const
1691 && e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 == 0) {
1696 if (e->Iex.Binop.op == Iop_Or8
1697 && e->Iex.Binop.arg1->tag == Iex_Const
1698 && e->Iex.Binop.arg1->Iex.Const.con->Ico.U8 == 0) {
1699 e2 = e->Iex.Binop.arg2;
1705 switch (e->Iex.Binop.op) {
1711 if (sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2))
1712 e2 = e->Iex.Binop.arg1;
1720 switch (e->Iex.Binop.op) {
1725 if (sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2))
1726 e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op);
1732 switch (e->Iex.Binop.op) {
1736 if (sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2))
1737 e2 = mkOnesOfPrimopResultType(e->Iex.Binop.op);
1749 if (e->Iex.Mux0X.cond->tag == Iex_Const) {
1752 vassert(e->Iex.Mux0X.cond->Iex.Const.con->tag == Ico_U8);
1753 zero = toBool(0 == (0xFF & e->Iex.Mux0X.cond
1754 ->Iex.Const.con->Ico.U8));
1755 e2 = zero ? e->Iex.Mux0X.expr0 : e->Iex.Mux0X.exprX;
1759 if (sameIRTempsOrIcoU32s(e->Iex.Mux0X.expr0,
1760 e->Iex.Mux0X.exprX)) {
1761 e2 = e->Iex.Mux0X.expr0;
1767 && sameIRTemps(e->Iex.Binop.arg1, e->Iex.Binop.arg2)) {
1804 if (env[(Int)ex->Iex.RdTmp.tmp] != NULL) {
1805 return env[(Int)ex->Iex.RdTmp.tmp];
1816 vassert(isIRAtom(ex->Iex.GetI.ix));
1818 ex->Iex.GetI.descr,
1819 subst_Expr(env, ex->Iex.GetI.ix),
1820 ex->Iex.GetI.bias
1824 vassert(isIRAtom(ex->Iex.Qop.arg1));
1825 vassert(isIRAtom(ex->Iex.Qop.arg2));
1826 vassert(isIRAtom(ex->Iex.Qop.arg3));
1827 vassert(isIRAtom(ex->Iex.Qop.arg4));
1829 ex->Iex.Qop.op,
1830 subst_Expr(env, ex->Iex.Qop.arg1),
1831 subst_Expr(env, ex->Iex.Qop.arg2),
1832 subst_Expr(env, ex->Iex.Qop.arg3),
1833 subst_Expr(env, ex->Iex.Qop.arg4)
1837 vassert(isIRAtom(ex->Iex.Triop.arg1));
1838 vassert(isIRAtom(ex->Iex.Triop.arg2));
1839 vassert(isIRAtom(ex->Iex.Triop.arg3));
1841 ex->Iex.Triop.op,
1842 subst_Expr(env, ex->Iex.Triop.arg1),
1843 subst_Expr(env, ex->Iex.Triop.arg2),
1844 subst_Expr(env, ex->Iex.Triop.arg3)
1848 vassert(isIRAtom(ex->Iex.Binop.arg1));
1849 vassert(isIRAtom(ex->Iex.Binop.arg2));
1851 ex->Iex.Binop.op,
1852 subst_Expr(env, ex->Iex.Binop.arg1),
1853 subst_Expr(env, ex->Iex.Binop.arg2)
1857 vassert(isIRAtom(ex->Iex.Unop.arg));
1859 ex->Iex.Unop.op,
1860 subst_Expr(env, ex->Iex.Unop.arg)
1864 vassert(isIRAtom(ex->Iex.Load.addr));
1866 ex->Iex.Load.end,
1867 ex->Iex.Load.ty,
1868 Iex.Load.addr)
1873 IRExpr** args2 = shallowCopyIRExprVec(ex->Iex.CCall.args);
1879 ex->Iex.CCall.cee,
1880 ex->Iex.CCall.retty,
1886 vassert(isIRAtom(ex->Iex.Mux0X.cond));
1887 vassert(isIRAtom(ex->Iex.Mux0X.expr0));
1888 vassert(isIRAtom(ex->Iex.Mux0X.exprX));
1890 subst_Expr(env, ex->Iex.Mux0X.cond),
1891 subst_Expr(env, ex->Iex.Mux0X.expr0),
1892 subst_Expr(env, ex->Iex.Mux0X.exprX)
2028 vassert(fcond->Iex.Const.con->tag == Ico_U1);
2029 vassert(fcond->Iex.Const.con->Ico.U1 == False
2030 || fcond->Iex.Const.con->Ico.U1 == True);
2031 if (fcond->Iex.Const.con->Ico.U1 == False) {
2035 vassert(fcond->Iex.Const.con->Ico.U1 == True);
2103 && st2->Ist.WrTmp.data->Iex.Const.con->tag != Ico_F64i) {
2148 addUses_Expr(set, e->Iex.GetI.ix);
2151 addUses_Expr(set, e->Iex.Mux0X.cond);
2152 addUses_Expr(set, e->Iex.Mux0X.expr0);
2153 addUses_Expr(set, e->Iex.Mux0X.exprX);
2156 for (i = 0; e->Iex.CCall.args[i]; i++)
2157 addUses_Expr(set, e->Iex.CCall.args[i]);
2160 addUses_Expr(set, e->Iex.Load.addr);
2163 addUses_Expr(set, e->Iex.Qop.arg1);
2164 addUses_Expr(set, e->Iex.Qop.arg2);
2165 addUses_Expr(set, e->Iex.Qop.arg3);
2166 addUses_Expr(set, e->Iex.Qop.arg4);
2169 addUses_Expr(set, e->Iex.Triop.arg1);
2170 addUses_Expr(set, e->Iex.Triop.arg2);
2171 addUses_Expr(set, e->Iex.Triop.arg3);
2174 addUses_Expr(set, e->Iex.Binop.arg1);
2175 addUses_Expr(set, e->Iex.Binop.arg2);
2178 addUses_Expr(set, e->Iex.Unop.arg);
2181 addUses_Temp(set, e->Iex.RdTmp.tmp);
2259 && e->Iex.Const.con->tag == Ico_U1
2260 && e->Iex.Const.con->Ico.U1 == False );
2267 && e->Iex.Const.con->tag == Ico_U1
2268 && e->Iex.Const.con->Ico.U1 == True );
2376 ex = (*specHelper)( st->Ist.WrTmp.data->Iex.CCall.cee->name,
2377 st->Ist.WrTmp.data->Iex.CCall.args,
2697 && e->Iex.Unop.arg->tag == Iex_RdTmp) {
2700 ae->u.Ut.op = e->Iex.Unop.op;
2701 ae->u.Ut.arg = e->Iex.Unop.arg->Iex.RdTmp.tmp;
2706 && e->Iex.Binop.arg1->tag == Iex_RdTmp
2707 && e->Iex.Binop.arg2->tag == Iex_RdTmp) {
2710 ae->u.Btt.op = e->Iex.Binop.op;
2711 ae->u.Btt.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp;
2712 ae->u.Btt.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp;
2717 && e->Iex.Binop.arg1->tag == Iex_RdTmp
2718 && e->Iex.Binop.arg2->tag == Iex_Const) {
2721 ae->u.Btc.op = e->Iex.Binop.op;
2722 ae->u.Btc.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp;
2723 ae->u.Btc.con2 = *(e->Iex.Binop.arg2->Iex.Const.con);
2728 && e->Iex.Binop.arg1->tag == Iex_Const
2729 && e->Iex.Binop.arg2->tag == Iex_RdTmp) {
2732 ae->u.Bct.op = e->Iex.Binop.op;
2733 ae->u.Bct.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp;
2734 ae->u.Bct.con1 = *(e->Iex.Binop.arg1->Iex.Const.con);
2739 && e->Iex.Const.con->tag == Ico_F64i) {
2742 ae->u.Cf64i.f64i = e->Iex.Const.con->Ico.F64i;
2747 && e->Iex.Mux0X.cond->tag == Iex_RdTmp
2748 && e->Iex.Mux0X.expr0->tag == Iex_RdTmp
2749 && e->Iex.Mux0X.exprX->tag == Iex_RdTmp) {
2752 ae->u.Mttt.co = e->Iex.Mux0X.cond->Iex.RdTmp.tmp;
2753 ae->u.Mttt.e0 = e->Iex.Mux0X.expr0->Iex.RdTmp.tmp;
2754 ae->u.Mttt.eX = e->Iex.Mux0X.exprX->Iex.RdTmp.tmp;
2759 && e->Iex.GetI.ix->tag == Iex_RdTmp) {
2762 ae->u.GetIt.descr = e->Iex.GetI.descr;
2763 ae->u.GetIt.ix = e->Iex.GetI.ix->Iex.RdTmp.tmp;
2764 ae->u.GetIt.bias = e->Iex.GetI.bias;
2939 if (e->Iex.Binop.op != Iop_Add32 && e->Iex.Binop.op != Iop_Sub32)
2941 if (e->Iex.Binop.arg1->tag != Iex_RdTmp)
2943 if (e->Iex.Binop.arg2->tag != Iex_Const)
2945 *tmp = e->Iex.Binop.arg1->Iex.RdTmp.tmp;
2946 *i32 = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32);
2947 if (e->Iex.Binop.op == Iop_Sub32)
3050 && st->Ist.WrTmp.data->Iex.GetI.ix->tag == Iex_RdTmp
3051 && collapseChain(bb, i-1, st->Ist.WrTmp.data->Iex.GetI.ix
3052 ->Iex.RdTmp.tmp, &var2, &con2)) {
3058 con2 += st->Ist.WrTmp.data->Iex.GetI.bias;
3062 IRExpr_GetI(st->Ist.WrTmp.data->Iex.GetI.descr,
3076 && collapseChain(bb, i-1, st->Ist.PutI.ix->Iex.RdTmp.tmp,
3287 s2->Ist.WrTmp.data->Iex.GetI.descr,
3288 s2->Ist.WrTmp.data->Iex.GetI.ix,
3289 s2->Ist.WrTmp.data->Iex.GetI.bias
3297 s2->Ist.WrTmp.data->Iex.Get.offset,
3298 s2->Ist.WrTmp.data->Iex.Get.ty
3341 && st->Ist.WrTmp.data->Iex.GetI.ix->tag == Iex_RdTmp) {
3342 IRRegArray* descr = st->Ist.WrTmp.data->Iex.GetI.descr;
3343 IRExpr* ix = st->Ist.WrTmp.data->Iex.GetI.ix;
3344 Int bias = st->Ist.WrTmp.data->Iex.GetI.bias;
3438 e->Iex.RdTmp.tmp += delta;
3444 deltaIRExpr(e->Iex.GetI.ix, delta);
3447 deltaIRExpr(e->Iex.Qop.arg1, delta);
3448 deltaIRExpr(e->Iex.Qop.arg2, delta);
3449 deltaIRExpr(e->Iex.Qop.arg3, delta);
3450 deltaIRExpr(e->Iex.Qop.arg4, delta);
3453 deltaIRExpr(e->Iex.Triop.arg1, delta);
3454 deltaIRExpr(e->Iex.Triop.arg2, delta);
3455 deltaIRExpr(e->Iex.Triop.arg3, delta);
3458 deltaIRExpr(e->Iex.Binop.arg1, delta);
3459 deltaIRExpr(e->Iex.Binop.arg2, delta);
3462 deltaIRExpr(e->Iex.Unop.arg, delta);
3465 deltaIRExpr(e->Iex.Load.addr, delta);
3468 for (i = 0; e->Iex.CCall.args[i]; i++)
3469 deltaIRExpr(e->Iex.CCall.args[i], delta);
3472 deltaIRExpr(e->Iex.Mux0X.cond, delta);
3473 deltaIRExpr(e->Iex.Mux0X.expr0, delta);
3474 deltaIRExpr(e->Iex.Mux0X.exprX, delta);
3635 && (udst->Iex.Const.con->tag == Ico_U32
3636 || udst->Iex.Const.con->tag == Ico_U64)) {
3639 xxx_value = udst->Iex.Const.con->tag == Ico_U64
3640 ? udst->Iex.Const.con->Ico.U64
3641 : (Addr64)(udst->Iex.Const.con->Ico.U32);
3688 vassert(con->tag == udst->Iex.Const.con->tag);
3723 vassert(udst->Iex.Const.con->tag == Ico_U32
3724 || udst->Iex.Const.con->tag == Ico_U64);
3725 vassert(con->tag == udst->Iex.Const.con->tag);
3729 udst->Iex.Const.con->Ico.U64 = xxx_value;
3732 udst->Iex.Const.con->Ico.U32 = (UInt)xxx_value;
3833 for (i = 0; e->Iex.CCall.args[i]; i++)
3834 setHints_Expr(doesLoad, doesGet, e->Iex.CCall.args[i]);
3837 setHints_Expr(doesLoad, doesGet, e->Iex.Mux0X.cond);
3838 setHints_Expr(doesLoad, doesGet, e->Iex.Mux0X.expr0);
3839 setHints_Expr(doesLoad, doesGet, e->Iex.Mux0X.exprX);
3842 setHints_Expr(doesLoad, doesGet, e->Iex.Qop.arg1);
3843 setHints_Expr(doesLoad, doesGet, e->Iex.Qop.arg2);
3844 setHints_Expr(doesLoad, doesGet, e->Iex.Qop.arg3);
3845 setHints_Expr(doesLoad, doesGet, e->Iex.Qop.arg4);
3848 setHints_Expr(doesLoad, doesGet, e->Iex.Triop.arg1);
3849 setHints_Expr(doesLoad, doesGet, e->Iex.Triop.arg2);
3850 setHints_Expr(doesLoad, doesGet, e->Iex.Triop.arg3);
3853 setHints_Expr(doesLoad, doesGet, e->Iex.Binop.arg1);
3854 setHints_Expr(doesLoad, doesGet, e->Iex.Binop.arg2);
3857 setHints_Expr(doesLoad, doesGet, e->Iex.Unop.arg);
3861 setHints_Expr(doesLoad, doesGet, e->Iex.Load.addr);
3868 setHints_Expr(doesLoad, doesGet, e->Iex.GetI.ix);
3905 uses[e->Iex.RdTmp.tmp]++;
3909 aoccCount_Expr(uses, e->Iex.Mux0X.cond);
3910 aoccCount_Expr(uses, e->Iex.Mux0X.expr0);
3911 aoccCount_Expr(uses, e->Iex.Mux0X.exprX);
3915 aoccCount_Expr(uses, e->Iex.Qop.arg1);
3916 aoccCount_Expr(uses, e->Iex.Qop.arg2);
3917 aoccCount_Expr(uses, e->Iex.Qop.arg3);
3918 aoccCount_Expr(uses, e->Iex.Qop.arg4);
3922 aoccCount_Expr(uses, e->Iex.Triop.arg1);
3923 aoccCount_Expr(uses, e->Iex.Triop.arg2);
3924 aoccCount_Expr(uses, e->Iex.Triop.arg3);
3928 aoccCount_Expr(uses, e->Iex.Binop.arg1);
3929 aoccCount_Expr(uses, e->Iex.Binop.arg2);
3933 aoccCount_Expr(uses, e->Iex.Unop.arg);
3937 aoccCount_Expr(uses, e->Iex.Load.addr);
3941 for (i = 0; e->Iex.CCall.args[i]; i++)
3942 aoccCount_Expr(uses, e->Iex.CCall.args[i]);
3946 aoccCount_Expr(uses, e->Iex.GetI.ix);
4048 return e->tag == Iex_Unop && e->Iex.Unop.op == op;
4051 return e->tag == Iex_Binop && e->Iex.Binop.op == op;
4061 IRExpr_Binop( Iop_Or32, a1->Iex.Unop.arg,
4062 a2->Iex.Unop.arg ) );
4069 return a1->Iex.Unop.arg;
4085 && is_Unop(aa->Iex.Binop.arg1, Iop_CmpwNEZ64))
4089 aa->Iex.Binop.arg1->Iex.Unop.arg,
4090 aa->Iex.Binop.arg2));
4093 && is_Unop(aa->Iex.Binop.arg2, Iop_CmpwNEZ64))
4097 aa->Iex.Binop.arg1,
4098 aa->Iex.Binop.arg2->Iex.Unop.arg));
4103 return IRExpr_Unop(Iop_CmpNEZ64, aa->Iex.Unop.arg);
4108 return IRExpr_Unop( Iop_CmpwNEZ32, aa->Iex.Unop.arg );
4113 return IRExpr_Unop(Iop_CmpNEZ32, aa->Iex.Unop.arg);
4116 return aa->Iex.Unop.arg;
4121 return aa->Iex.Unop.arg;
4126 return IRExpr_Unop( Iop_Left32, aa->Iex.Unop.arg );
4131 return aa->Iex.Unop.arg;
4134 return IRExpr_Unop( Iop_CmpNEZ32, aa->Iex.Unop.arg );
4139 return aa->Iex.Unop.arg;
4142 return IRExpr_Unop( Iop_CmpNEZ64, aa->Iex.Unop.arg );
4147 return aa->Iex.Unop.arg;
4150 return IRExpr_Unop(Iop_8Uto32, aa->Iex.Unop.arg);
4156 return IRExpr_Unop(Iop_8Uto64, aa->Iex.Unop.arg);
4159 return IRExpr_Unop(Iop_16Uto64, aa->Iex.Unop.arg);
4165 && is_Unop(aa->Iex.Unop.arg, Iop_32to8)
4166 && is_Unop(aa->Iex.Unop.arg->Iex.Unop.arg, Iop_1Uto32)
4167 && is_Unop(aa->Iex.Unop.arg->Iex.Unop.arg->Iex.Unop.arg,
4170 aa->Iex.Unop.arg->Iex.Unop.arg
4171 ->Iex.Unop.arg->Iex.Unop.arg);
4192 args2 = shallowCopyIRExprVec(e->Iex.CCall.args);
4196 e->Iex.CCall.cee,
4197 e->Iex.CCall.retty,
4201 e2 = atbSubst_Temp(env, e->Iex.RdTmp.tmp);
4205 atbSubst_Expr(env, e->Iex.Mux0X.cond),
4206 atbSubst_Expr(env, e->Iex.Mux0X.expr0),
4207 atbSubst_Expr(env, e->Iex.Mux0X.exprX)
4211 e->Iex.Qop.op,
4212 atbSubst_Expr(env, e->Iex.Qop.arg1),
4213 atbSubst_Expr(env, e->Iex.Qop.arg2),
4214 atbSubst_Expr(env, e->Iex.Qop.arg3),
4215 atbSubst_Expr(env, e->Iex.Qop.arg4)
4219 e->Iex.Triop.op,
4220 atbSubst_Expr(env, e->Iex.Triop.arg1),
4221 atbSubst_Expr(env, e->Iex.Triop.arg2),
4222 atbSubst_Expr(env, e->Iex.Triop.arg3)
4226 e->Iex.Binop.op,
4227 atbSubst_Expr(env, e->Iex.Binop.arg1),
4228 atbSubst_Expr(env, e->Iex.Binop.arg2)
4232 e->Iex.Unop.op,
4233 atbSubst_Expr(env, e->Iex.Unop.arg)
4237 e->Iex.Load.end,
4238 e->Iex.Load.ty,
4239 atbSubst_Expr(env, e->Iex.Load.addr)
4243 e->Iex.GetI.descr,
4244 atbSubst_Expr(env, e->Iex.GetI.ix),
4245 e->Iex.GetI.bias