Lines Matching refs:Iex
274 return toBool( isIRAtom(e->Iex.Binop.arg1) in isFlat()
275 && isIRAtom(e->Iex.Binop.arg2) ); in isFlat()
277 return isIRAtom(e->Iex.Load.addr); in isFlat()
297 IRExpr_GetI(ex->Iex.GetI.descr, in flatten_Expr()
298 flatten_Expr(bb, ex->Iex.GetI.ix), in flatten_Expr()
299 ex->Iex.GetI.bias))); in flatten_Expr()
309 IRQop* qop = ex->Iex.Qop.details; in flatten_Expr()
321 IRTriop* triop = ex->Iex.Triop.details; in flatten_Expr()
334 IRExpr_Binop(ex->Iex.Binop.op, in flatten_Expr()
335 flatten_Expr(bb, ex->Iex.Binop.arg1), in flatten_Expr()
336 flatten_Expr(bb, ex->Iex.Binop.arg2)))); in flatten_Expr()
342 IRExpr_Unop(ex->Iex.Unop.op, in flatten_Expr()
343 flatten_Expr(bb, ex->Iex.Unop.arg)))); in flatten_Expr()
349 IRExpr_Load(ex->Iex.Load.end, in flatten_Expr()
350 ex->Iex.Load.ty, in flatten_Expr()
351 flatten_Expr(bb, ex->Iex.Load.addr)))); in flatten_Expr()
355 newargs = shallowCopyIRExprVec(ex->Iex.CCall.args); in flatten_Expr()
360 IRExpr_CCall(ex->Iex.CCall.cee, in flatten_Expr()
361 ex->Iex.CCall.retty, in flatten_Expr()
368 IRExpr_ITE(flatten_Expr(bb, ex->Iex.ITE.cond), in flatten_Expr()
369 flatten_Expr(bb, ex->Iex.ITE.iftrue), in flatten_Expr()
370 flatten_Expr(bb, ex->Iex.ITE.iffalse)))); in flatten_Expr()
376 if (ex->Iex.Const.con->tag == Ico_F64i) { in flatten_Expr()
379 IRExpr_Const(ex->Iex.Const.con))); in flatten_Expr()
633 key = (HWord)mk_key_GetPut( get->Iex.Get.offset, in redundant_get_removal_BB()
634 get->Iex.Get.ty ); in redundant_get_removal_BB()
644 == st->Ist.WrTmp.data->Iex.Get.ty ); in redundant_get_removal_BB()
737 key = mk_key_GetPut ( e->Iex.Get.offset, e->Iex.Get.ty ); in handle_gets_Stmt()
741 key = mk_key_GetIPutI ( e->Iex.GetI.descr ); in handle_gets_Stmt()
1054 if (e1->Iex.RdTmp.tmp == e2->Iex.RdTmp.tmp) return True; in sameIRExprs_aux2()
1056 if (env[e1->Iex.RdTmp.tmp] && env[e2->Iex.RdTmp.tmp]) { in sameIRExprs_aux2()
1057 Bool same = sameIRExprs_aux(env, env[e1->Iex.RdTmp.tmp], in sameIRExprs_aux2()
1058 env[e2->Iex.RdTmp.tmp]); in sameIRExprs_aux2()
1074 return toBool( e1->Iex.Binop.op == e2->Iex.Binop.op in sameIRExprs_aux2()
1075 && sameIRExprs_aux( env, e1->Iex.Binop.arg1, in sameIRExprs_aux2()
1076 e2->Iex.Binop.arg1 ) in sameIRExprs_aux2()
1077 && sameIRExprs_aux( env, e1->Iex.Binop.arg2, in sameIRExprs_aux2()
1078 e2->Iex.Binop.arg2 )); in sameIRExprs_aux2()
1081 return toBool( e1->Iex.Unop.op == e2->Iex.Unop.op in sameIRExprs_aux2()
1082 && sameIRExprs_aux( env, e1->Iex.Unop.arg, in sameIRExprs_aux2()
1083 e2->Iex.Unop.arg )); in sameIRExprs_aux2()
1086 IRConst *c1 = e1->Iex.Const.con; in sameIRExprs_aux2()
1087 IRConst *c2 = e2->Iex.Const.con; in sameIRExprs_aux2()
1101 IRTriop *tri1 = e1->Iex.Triop.details; in sameIRExprs_aux2()
1102 IRTriop *tri2 = e2->Iex.Triop.details; in sameIRExprs_aux2()
1110 return toBool( sameIRExprs_aux( env, e1->Iex.ITE.cond, in sameIRExprs_aux2()
1111 e2->Iex.ITE.cond ) in sameIRExprs_aux2()
1112 && sameIRExprs_aux( env, e1->Iex.ITE.iftrue, in sameIRExprs_aux2()
1113 e2->Iex.ITE.iftrue ) in sameIRExprs_aux2()
1114 && sameIRExprs_aux( env, e1->Iex.ITE.iffalse, in sameIRExprs_aux2()
1115 e2->Iex.ITE.iffalse )); in sameIRExprs_aux2()
1162 IRConst *c1 = e1->Iex.Const.con; in debug_only_hack_sameIRExprs_might_assert()
1163 IRConst *c2 = e2->Iex.Const.con; in debug_only_hack_sameIRExprs_might_assert()
1177 && e->Iex.Const.con->tag == Ico_U32 in isZeroU32()
1178 && e->Iex.Const.con->Ico.U32 == 0); in isZeroU32()
1185 && e->Iex.Const.con->tag == Ico_U64 in isZeroU64()
1186 && e->Iex.Const.con->Ico.U64 == 0); in isZeroU64()
1193 && e->Iex.Const.con->tag == Ico_V128 in isZeroV128()
1194 && e->Iex.Const.con->Ico.V128 == 0x0000); in isZeroV128()
1201 && e->Iex.Const.con->tag == Ico_V256 in isZeroV256()
1202 && e->Iex.Const.con->Ico.V256 == 0x00000000); in isZeroV256()
1209 switch (e->Iex.Const.con->tag) { in isZeroU()
1210 case Ico_U1: return toBool( e->Iex.Const.con->Ico.U1 == 0); in isZeroU()
1211 case Ico_U8: return toBool( e->Iex.Const.con->Ico.U8 == 0); in isZeroU()
1212 case Ico_U16: return toBool( e->Iex.Const.con->Ico.U16 == 0); in isZeroU()
1213 case Ico_U32: return toBool( e->Iex.Const.con->Ico.U32 == 0); in isZeroU()
1214 case Ico_U64: return toBool( e->Iex.Const.con->Ico.U64 == 0); in isZeroU()
1223 switch (e->Iex.Const.con->tag) { in isOnesU()
1224 case Ico_U8: return toBool( e->Iex.Const.con->Ico.U8 == 0xFF); in isOnesU()
1225 case Ico_U16: return toBool( e->Iex.Const.con->Ico.U16 == 0xFFFF); in isOnesU()
1226 case Ico_U32: return toBool( e->Iex.Const.con->Ico.U32 in isOnesU()
1228 case Ico_U64: return toBool( e->Iex.Const.con->Ico.U64 in isOnesU()
1342 e = env[(Int)e->Iex.RdTmp.tmp]; in chase()
1356 if (e->Iex.Unop.arg->tag == Iex_Const) { in fold_Expr()
1357 switch (e->Iex.Unop.op) { in fold_Expr()
1360 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1365 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1370 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1376 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1381 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1386 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1391 e->Iex.Unop.arg->Iex.Const.con->Ico.U1 in fold_Expr()
1396 /* signed */ Int s32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U8; in fold_Expr()
1403 /* signed */ Int s32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16; in fold_Expr()
1411 0xFFULL & e->Iex.Unop.arg->Iex.Const.con->Ico.U8)); in fold_Expr()
1415 0xFFFFULL & e->Iex.Unop.arg->Iex.Const.con->Ico.U16)); in fold_Expr()
1419 0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8)); in fold_Expr()
1422 /* signed */ Short s16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U8; in fold_Expr()
1430 0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8)); in fold_Expr()
1434 0xFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U16)); in fold_Expr()
1438 0xFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U32))); in fold_Expr()
1442 0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U32))); in fold_Expr()
1446 1 == (1 & e->Iex.Unop.arg->Iex.Const.con->Ico.U32) in fold_Expr()
1451 1 == (1 & e->Iex.Unop.arg->Iex.Const.con->Ico.U64) in fold_Expr()
1457 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.V128))); in fold_Expr()
1461 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U64))); in fold_Expr()
1465 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U32))); in fold_Expr()
1469 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U16)))); in fold_Expr()
1473 ~ (e->Iex.Unop.arg->Iex.Const.con->Ico.U8)))); in fold_Expr()
1478 notBool(e->Iex.Unop.arg->Iex.Const.con->Ico.U1))); in fold_Expr()
1482 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1488 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1494 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1500 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1508 & e->Iex.Unop.arg->Iex.Const.con->Ico.U32)); in fold_Expr()
1511 /* signed */ Long s64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16; in fold_Expr()
1518 /* signed */ Long s64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32; in fold_Expr()
1526 UShort w16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16; in fold_Expr()
1532 UShort w16 = e->Iex.Unop.arg->Iex.Const.con->Ico.U16; in fold_Expr()
1542 (0xFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U8) in fold_Expr()
1548 (0xFFFFFFFF & e->Iex.Unop.arg->Iex.Const.con->Ico.U32) in fold_Expr()
1553 0ULL != e->Iex.Unop.arg->Iex.Const.con->Ico.U64 in fold_Expr()
1558 UInt w32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32; in fold_Expr()
1566 ULong w64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1575 UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32; in fold_Expr()
1583 ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1591 UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32; in fold_Expr()
1597 ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1608 UInt u32 = e->Iex.Unop.arg->Iex.Const.con->Ico.U32; in fold_Expr()
1617 UShort v128 = e->Iex.Unop.arg->Iex.Const.con->Ico.V128; in fold_Expr()
1626 UShort v128 = e->Iex.Unop.arg->Iex.Const.con->Ico.V128; in fold_Expr()
1635 ULong u64 = e->Iex.Unop.arg->Iex.Const.con->Ico.U64; in fold_Expr()
1647 UInt v256 = e->Iex.Unop.arg->Iex.Const.con->Ico.V256; in fold_Expr()
1664 if (e->Iex.Binop.arg1->tag == Iex_Const in fold_Expr()
1665 && e->Iex.Binop.arg2->tag == Iex_Const) { in fold_Expr()
1667 switch (e->Iex.Binop.op) { in fold_Expr()
1672 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8 in fold_Expr()
1673 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U8)))); in fold_Expr()
1677 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16 in fold_Expr()
1678 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U16)))); in fold_Expr()
1682 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1683 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))); in fold_Expr()
1687 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1688 | e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))); in fold_Expr()
1692 (e->Iex.Binop.arg1->Iex.Const.con->Ico.V128 in fold_Expr()
1693 | e->Iex.Binop.arg2->Iex.Const.con->Ico.V128))); in fold_Expr()
1699 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8 in fold_Expr()
1700 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U8)))); in fold_Expr()
1704 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16 in fold_Expr()
1705 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U16)))); in fold_Expr()
1709 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1710 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))); in fold_Expr()
1714 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1715 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))); in fold_Expr()
1719 (e->Iex.Binop.arg1->Iex.Const.con->Ico.V128 in fold_Expr()
1720 ^ e->Iex.Binop.arg2->Iex.Const.con->Ico.V128))); in fold_Expr()
1726 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8 in fold_Expr()
1727 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U8)))); in fold_Expr()
1731 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U16 in fold_Expr()
1732 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U16)))); in fold_Expr()
1736 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1737 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))); in fold_Expr()
1741 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1742 & e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))); in fold_Expr()
1746 (e->Iex.Binop.arg1->Iex.Const.con->Ico.V128 in fold_Expr()
1747 & e->Iex.Binop.arg2->Iex.Const.con->Ico.V128))); in fold_Expr()
1753 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8 in fold_Expr()
1754 + e->Iex.Binop.arg2->Iex.Const.con->Ico.U8)))); in fold_Expr()
1758 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1759 + e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))); in fold_Expr()
1763 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1764 + e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))); in fold_Expr()
1770 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8 in fold_Expr()
1771 - e->Iex.Binop.arg2->Iex.Const.con->Ico.U8)))); in fold_Expr()
1775 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1776 - e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))); in fold_Expr()
1780 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1781 - e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))); in fold_Expr()
1786 UInt u32a = e->Iex.Binop.arg1->Iex.Const.con->Ico.U32; in fold_Expr()
1787 UInt u32b = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32; in fold_Expr()
1796 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1797 * e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))); in fold_Expr()
1801 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1802 * e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))); in fold_Expr()
1807 UInt u32a = e->Iex.Binop.arg1->Iex.Const.con->Ico.U32; in fold_Expr()
1808 UInt u32b = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32; in fold_Expr()
1821 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); in fold_Expr()
1822 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8); in fold_Expr()
1825 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1829 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); in fold_Expr()
1830 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8); in fold_Expr()
1833 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1841 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); in fold_Expr()
1842 s32 = (Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32); in fold_Expr()
1843 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8); in fold_Expr()
1853 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); in fold_Expr()
1854 s64 = (Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64); in fold_Expr()
1855 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8); in fold_Expr()
1867 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); in fold_Expr()
1868 u32 = (UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32); in fold_Expr()
1869 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8); in fold_Expr()
1879 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); in fold_Expr()
1880 u64 = (ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64); in fold_Expr()
1881 shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8); in fold_Expr()
1892 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1893 == e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))); in fold_Expr()
1897 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1898 == e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))); in fold_Expr()
1906 ((0xFF & e->Iex.Binop.arg1->Iex.Const.con->Ico.U8) in fold_Expr()
1907 != (0xFF & e->Iex.Binop.arg2->Iex.Const.con->Ico.U8))))); in fold_Expr()
1913 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U32 in fold_Expr()
1914 != e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)))); in fold_Expr()
1920 (e->Iex.Binop.arg1->Iex.Const.con->Ico.U64 in fold_Expr()
1921 != e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)))); in fold_Expr()
1927 ((UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32) in fold_Expr()
1928 <= (UInt)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))))); in fold_Expr()
1932 ((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64) in fold_Expr()
1933 <= (ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))))); in fold_Expr()
1939 ((Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32) in fold_Expr()
1940 <= (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))))); in fold_Expr()
1944 ((Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64) in fold_Expr()
1945 <= (Long)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))))); in fold_Expr()
1951 ((Int)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32) in fold_Expr()
1952 < (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))))); in fold_Expr()
1956 ((Long)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64) in fold_Expr()
1957 < (Long)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))))); in fold_Expr()
1963 ((UInt)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U32) in fold_Expr()
1964 < (UInt)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32))))); in fold_Expr()
1968 ((ULong)(e->Iex.Binop.arg1->Iex.Const.con->Ico.U64) in fold_Expr()
1969 < (ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64))))); in fold_Expr()
1975 UInt u32a = e->Iex.Binop.arg1->Iex.Const.con->Ico.U32; in fold_Expr()
1976 UInt u32b = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32; in fold_Expr()
1993 (((ULong)(e->Iex.Binop.arg1 in fold_Expr()
1994 ->Iex.Const.con->Ico.U32)) << 32) in fold_Expr()
1995 | ((ULong)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32)) in fold_Expr()
2010 ULong argHi = e->Iex.Binop.arg1->Iex.Const.con->Ico.U64; in fold_Expr()
2011 ULong argLo = e->Iex.Binop.arg2->Iex.Const.con->Ico.U64; in fold_Expr()
2021 IRExpr* argHi = e->Iex.Binop.arg1; in fold_Expr()
2022 IRExpr* argLo = e->Iex.Binop.arg2; in fold_Expr()
2035 UShort arg1 = e->Iex.Binop.arg1->Iex.Const.con->Ico.V128; in fold_Expr()
2036 UShort arg2 = e->Iex.Binop.arg2->Iex.Const.con->Ico.V128; in fold_Expr()
2052 switch (e->Iex.Binop.op) { in fold_Expr()
2058 if (isZeroU(e->Iex.Binop.arg2)) { in fold_Expr()
2059 e2 = e->Iex.Binop.arg1; in fold_Expr()
2063 if (isZeroU(e->Iex.Binop.arg1)) { in fold_Expr()
2064 e2 = e->Iex.Binop.arg1; in fold_Expr()
2071 if (isZeroU(e->Iex.Binop.arg2)) { in fold_Expr()
2072 e2 = e->Iex.Binop.arg1; in fold_Expr()
2083 if (isZeroU(e->Iex.Binop.arg2)) { in fold_Expr()
2084 e2 = e->Iex.Binop.arg1; in fold_Expr()
2088 if (isZeroU(e->Iex.Binop.arg1)) { in fold_Expr()
2089 e2 = e->Iex.Binop.arg2; in fold_Expr()
2094 if (isOnesU(e->Iex.Binop.arg1) || isOnesU(e->Iex.Binop.arg2)) { in fold_Expr()
2095 e2 = mkOnesOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2099 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2100 e2 = e->Iex.Binop.arg1; in fold_Expr()
2111 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2112 e2 = IRExpr_Binop(Iop_Shl8, e->Iex.Binop.arg1, in fold_Expr()
2123 if (isZeroU(e->Iex.Binop.arg2)) { in fold_Expr()
2124 e2 = e->Iex.Binop.arg1; in fold_Expr()
2128 if (isZeroU(e->Iex.Binop.arg1)) { in fold_Expr()
2129 e2 = e->Iex.Binop.arg2; in fold_Expr()
2133 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2135 e->Iex.Binop.op == Iop_Add32 ? Iop_Shl32 : Iop_Shl64, in fold_Expr()
2136 e->Iex.Binop.arg1, IRExpr_Const(IRConst_U8(1))); in fold_Expr()
2144 if (isZeroU(e->Iex.Binop.arg2)) { in fold_Expr()
2145 e2 = e->Iex.Binop.arg1; in fold_Expr()
2149 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2150 e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2156 if (isZeroV128(e->Iex.Binop.arg2)) { in fold_Expr()
2157 e2 = e->Iex.Binop.arg1; in fold_Expr()
2165 if (isOnesU(e->Iex.Binop.arg2)) { in fold_Expr()
2166 e2 = e->Iex.Binop.arg1; in fold_Expr()
2170 if (isZeroU(e->Iex.Binop.arg2)) { in fold_Expr()
2171 e2 = e->Iex.Binop.arg2; in fold_Expr()
2175 if (isZeroU(e->Iex.Binop.arg1)) { in fold_Expr()
2176 e2 = e->Iex.Binop.arg1; in fold_Expr()
2180 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2181 e2 = e->Iex.Binop.arg1; in fold_Expr()
2192 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2193 e2 = e->Iex.Binop.arg1; in fold_Expr()
2198 if (e->Iex.Binop.op == Iop_And64 in fold_Expr()
2199 && (isZeroU64(e->Iex.Binop.arg1) in fold_Expr()
2200 || isZeroU64(e->Iex.Binop.arg2))) { in fold_Expr()
2201 e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2203 } else if (e->Iex.Binop.op == Iop_AndV128 in fold_Expr()
2204 && (isZeroV128(e->Iex.Binop.arg1) in fold_Expr()
2205 || isZeroV128(e->Iex.Binop.arg2))) { in fold_Expr()
2206 e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2214 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2215 e2 = e->Iex.Binop.arg1; in fold_Expr()
2219 if (e->Iex.Binop.op == Iop_OrV128) { in fold_Expr()
2220 if (isZeroV128(e->Iex.Binop.arg2)) { in fold_Expr()
2221 e2 = e->Iex.Binop.arg1; in fold_Expr()
2224 if (isZeroV128(e->Iex.Binop.arg1)) { in fold_Expr()
2225 e2 = e->Iex.Binop.arg2; in fold_Expr()
2230 if (e->Iex.Binop.op == Iop_OrV256) { in fold_Expr()
2231 if (isZeroV256(e->Iex.Binop.arg2)) { in fold_Expr()
2232 e2 = e->Iex.Binop.arg1; in fold_Expr()
2249 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2250 e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2257 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2258 e2 = mkZeroOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2262 if (isZeroU32(e->Iex.Binop.arg2)) { in fold_Expr()
2263 IRExpr* a1 = chase(env, e->Iex.Binop.arg1); in fold_Expr()
2265 && a1->Iex.Unop.op == Iop_1Uto32) { in fold_Expr()
2266 e2 = a1->Iex.Unop.arg; in fold_Expr()
2278 if (sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2279 e2 = mkOnesOfPrimopResultType(e->Iex.Binop.op); in fold_Expr()
2293 if (e->Iex.ITE.cond->tag == Iex_Const) { in fold_Expr()
2295 vassert(e->Iex.ITE.cond->Iex.Const.con->tag == Ico_U1); in fold_Expr()
2296 e2 = e->Iex.ITE.cond->Iex.Const.con->Ico.U1 in fold_Expr()
2297 ? e->Iex.ITE.iftrue : e->Iex.ITE.iffalse; in fold_Expr()
2301 if (sameIRExprs(env, e->Iex.ITE.iftrue, in fold_Expr()
2302 e->Iex.ITE.iffalse)) { in fold_Expr()
2303 e2 = e->Iex.ITE.iffalse; in fold_Expr()
2330 && !debug_only_hack_sameIRExprs_might_assert(e->Iex.Binop.arg1, in fold_Expr()
2331 e->Iex.Binop.arg2) in fold_Expr()
2332 && sameIRExprs(env, e->Iex.Binop.arg1, e->Iex.Binop.arg2)) { in fold_Expr()
2370 if (env[(Int)ex->Iex.RdTmp.tmp] != NULL) { in subst_Expr()
2371 IRExpr *rhs = env[(Int)ex->Iex.RdTmp.tmp]; in subst_Expr()
2375 && rhs->Iex.Const.con->tag != Ico_F64i) in subst_Expr()
2386 vassert(isIRAtom(ex->Iex.GetI.ix)); in subst_Expr()
2388 ex->Iex.GetI.descr, in subst_Expr()
2389 subst_Expr(env, ex->Iex.GetI.ix), in subst_Expr()
2390 ex->Iex.GetI.bias in subst_Expr()
2394 IRQop* qop = ex->Iex.Qop.details; in subst_Expr()
2409 IRTriop* triop = ex->Iex.Triop.details; in subst_Expr()
2422 vassert(isIRAtom(ex->Iex.Binop.arg1)); in subst_Expr()
2423 vassert(isIRAtom(ex->Iex.Binop.arg2)); in subst_Expr()
2425 ex->Iex.Binop.op, in subst_Expr()
2426 subst_Expr(env, ex->Iex.Binop.arg1), in subst_Expr()
2427 subst_Expr(env, ex->Iex.Binop.arg2) in subst_Expr()
2431 vassert(isIRAtom(ex->Iex.Unop.arg)); in subst_Expr()
2433 ex->Iex.Unop.op, in subst_Expr()
2434 subst_Expr(env, ex->Iex.Unop.arg) in subst_Expr()
2438 vassert(isIRAtom(ex->Iex.Load.addr)); in subst_Expr()
2440 ex->Iex.Load.end, in subst_Expr()
2441 ex->Iex.Load.ty, in subst_Expr()
2442 subst_Expr(env, ex->Iex.Load.addr) in subst_Expr()
2447 IRExpr** args2 = shallowCopyIRExprVec(ex->Iex.CCall.args); in subst_Expr()
2453 ex->Iex.CCall.cee, in subst_Expr()
2454 ex->Iex.CCall.retty, in subst_Expr()
2460 vassert(isIRAtom(ex->Iex.ITE.cond)); in subst_Expr()
2461 vassert(isIRAtom(ex->Iex.ITE.iftrue)); in subst_Expr()
2462 vassert(isIRAtom(ex->Iex.ITE.iffalse)); in subst_Expr()
2464 subst_Expr(env, ex->Iex.ITE.cond), in subst_Expr()
2465 subst_Expr(env, ex->Iex.ITE.iftrue), in subst_Expr()
2466 subst_Expr(env, ex->Iex.ITE.iffalse) in subst_Expr()
2544 vassert(fguard->Iex.Const.con->tag == Ico_U1); in subst_and_fold_Stmt()
2545 if (fguard->Iex.Const.con->Ico.U1 == False) { in subst_and_fold_Stmt()
2548 vassert(fguard->Iex.Const.con->Ico.U1 == True); in subst_and_fold_Stmt()
2571 vassert(fguard->Iex.Const.con->tag == Ico_U1); in subst_and_fold_Stmt()
2572 if (fguard->Iex.Const.con->Ico.U1 == False) { in subst_and_fold_Stmt()
2577 vassert(fguard->Iex.Const.con->Ico.U1 == True); in subst_and_fold_Stmt()
2665 vassert(fcond->Iex.Const.con->tag == Ico_U1); in subst_and_fold_Stmt()
2666 if (fcond->Iex.Const.con->Ico.U1 == False) { in subst_and_fold_Stmt()
2670 vassert(fcond->Iex.Const.con->Ico.U1 == True); in subst_and_fold_Stmt()
2756 && st2->Ist.WrTmp.data->Iex.Const.con->tag != Ico_F64i) { in cprop_BB()
2770 vassert(guard->Iex.Const.con->tag == Ico_U1); in cprop_BB()
2771 vassert(guard->Iex.Const.con->Ico.U1 == True); in cprop_BB()
2819 vassert(guard->Iex.Const.con->tag == Ico_U1); in cprop_BB()
2820 vassert(guard->Iex.Const.con->Ico.U1 == True); in cprop_BB()
2875 addUses_Expr(set, e->Iex.GetI.ix); in addUses_Expr()
2878 addUses_Expr(set, e->Iex.ITE.cond); in addUses_Expr()
2879 addUses_Expr(set, e->Iex.ITE.iftrue); in addUses_Expr()
2880 addUses_Expr(set, e->Iex.ITE.iffalse); in addUses_Expr()
2883 for (i = 0; e->Iex.CCall.args[i]; i++) in addUses_Expr()
2884 addUses_Expr(set, e->Iex.CCall.args[i]); in addUses_Expr()
2887 addUses_Expr(set, e->Iex.Load.addr); in addUses_Expr()
2890 addUses_Expr(set, e->Iex.Qop.details->arg1); in addUses_Expr()
2891 addUses_Expr(set, e->Iex.Qop.details->arg2); in addUses_Expr()
2892 addUses_Expr(set, e->Iex.Qop.details->arg3); in addUses_Expr()
2893 addUses_Expr(set, e->Iex.Qop.details->arg4); in addUses_Expr()
2896 addUses_Expr(set, e->Iex.Triop.details->arg1); in addUses_Expr()
2897 addUses_Expr(set, e->Iex.Triop.details->arg2); in addUses_Expr()
2898 addUses_Expr(set, e->Iex.Triop.details->arg3); in addUses_Expr()
2901 addUses_Expr(set, e->Iex.Binop.arg1); in addUses_Expr()
2902 addUses_Expr(set, e->Iex.Binop.arg2); in addUses_Expr()
2905 addUses_Expr(set, e->Iex.Unop.arg); in addUses_Expr()
2908 addUses_Temp(set, e->Iex.RdTmp.tmp); in addUses_Expr()
3003 && e->Iex.Const.con->tag == Ico_U1 in isZeroU1()
3004 && e->Iex.Const.con->Ico.U1 == False ); in isZeroU1()
3011 && e->Iex.Const.con->tag == Ico_U1 in isOneU1()
3012 && e->Iex.Const.con->Ico.U1 == True ); in isOneU1()
3122 ex = (*specHelper)( st->Ist.WrTmp.data->Iex.CCall.cee->name, in spec_helpers_BB()
3123 st->Ist.WrTmp.data->Iex.CCall.args, in spec_helpers_BB()
3324 dst->u.tmp = arg->Iex.RdTmp.tmp; in irExprVec_to_TmpOrConsts()
3328 dst->u.con = arg->Iex.Const.con; in irExprVec_to_TmpOrConsts()
3626 if (e->Iex.Unop.arg->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3629 ae->u.Ut.op = e->Iex.Unop.op; in irExpr_to_AvailExpr()
3630 ae->u.Ut.arg = e->Iex.Unop.arg->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3636 if (e->Iex.Binop.arg1->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3637 if (e->Iex.Binop.arg2->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3640 ae->u.Btt.op = e->Iex.Binop.op; in irExpr_to_AvailExpr()
3641 ae->u.Btt.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3642 ae->u.Btt.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3645 if (e->Iex.Binop.arg2->tag == Iex_Const) { in irExpr_to_AvailExpr()
3648 ae->u.Btc.op = e->Iex.Binop.op; in irExpr_to_AvailExpr()
3649 ae->u.Btc.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3650 ae->u.Btc.con2 = *(e->Iex.Binop.arg2->Iex.Const.con); in irExpr_to_AvailExpr()
3653 } else if (e->Iex.Binop.arg1->tag == Iex_Const in irExpr_to_AvailExpr()
3654 && e->Iex.Binop.arg2->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3657 ae->u.Bct.op = e->Iex.Binop.op; in irExpr_to_AvailExpr()
3658 ae->u.Bct.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3659 ae->u.Bct.con1 = *(e->Iex.Binop.arg1->Iex.Const.con); in irExpr_to_AvailExpr()
3665 if (e->Iex.Const.con->tag == Ico_F64i) { in irExpr_to_AvailExpr()
3668 ae->u.Cf64i.f64i = e->Iex.Const.con->Ico.F64i; in irExpr_to_AvailExpr()
3674 if (e->Iex.ITE.cond->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3675 if (e->Iex.ITE.iffalse->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3676 if (e->Iex.ITE.iftrue->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3679 ae->u.Ittt.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3680 ae->u.Ittt.e1 = e->Iex.ITE.iftrue->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3681 ae->u.Ittt.e0 = e->Iex.ITE.iffalse->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3684 if (e->Iex.ITE.iftrue->tag == Iex_Const) { in irExpr_to_AvailExpr()
3687 ae->u.Itct.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3688 ae->u.Itct.con1 = *(e->Iex.ITE.iftrue->Iex.Const.con); in irExpr_to_AvailExpr()
3689 ae->u.Itct.e0 = e->Iex.ITE.iffalse->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3692 } else if (e->Iex.ITE.iffalse->tag == Iex_Const) { in irExpr_to_AvailExpr()
3693 if (e->Iex.ITE.iftrue->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3696 ae->u.Ittc.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3697 ae->u.Ittc.e1 = e->Iex.ITE.iftrue->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3698 ae->u.Ittc.con0 = *(e->Iex.ITE.iffalse->Iex.Const.con); in irExpr_to_AvailExpr()
3701 if (e->Iex.ITE.iftrue->tag == Iex_Const) { in irExpr_to_AvailExpr()
3704 ae->u.Itcc.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3705 ae->u.Itcc.con1 = *(e->Iex.ITE.iftrue->Iex.Const.con); in irExpr_to_AvailExpr()
3706 ae->u.Itcc.con0 = *(e->Iex.ITE.iffalse->Iex.Const.con); in irExpr_to_AvailExpr()
3714 if (e->Iex.GetI.ix->tag == Iex_RdTmp) { in irExpr_to_AvailExpr()
3717 ae->u.GetIt.descr = e->Iex.GetI.descr; in irExpr_to_AvailExpr()
3718 ae->u.GetIt.ix = e->Iex.GetI.ix->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3719 ae->u.GetIt.bias = e->Iex.GetI.bias; in irExpr_to_AvailExpr()
3728 ae->u.CCall.cee = e->Iex.CCall.cee; in irExpr_to_AvailExpr()
3729 ae->u.CCall.retty = e->Iex.CCall.retty; in irExpr_to_AvailExpr()
3735 e->Iex.CCall.args in irExpr_to_AvailExpr()
3916 if (e->Iex.Binop.op != Iop_Add32 && e->Iex.Binop.op != Iop_Sub32) in isAdd32OrSub32()
3918 if (e->Iex.Binop.arg1->tag != Iex_RdTmp) in isAdd32OrSub32()
3920 if (e->Iex.Binop.arg2->tag != Iex_Const) in isAdd32OrSub32()
3922 *tmp = e->Iex.Binop.arg1->Iex.RdTmp.tmp; in isAdd32OrSub32()
3923 *i32 = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32); in isAdd32OrSub32()
3924 if (e->Iex.Binop.op == Iop_Sub32) in isAdd32OrSub32()
4027 && st->Ist.WrTmp.data->Iex.GetI.ix->tag == Iex_RdTmp in collapse_AddSub_chains_BB()
4028 && collapseChain(bb, i-1, st->Ist.WrTmp.data->Iex.GetI.ix in collapse_AddSub_chains_BB()
4029 ->Iex.RdTmp.tmp, &var2, &con2)) { in collapse_AddSub_chains_BB()
4035 con2 += st->Ist.WrTmp.data->Iex.GetI.bias; in collapse_AddSub_chains_BB()
4039 IRExpr_GetI(st->Ist.WrTmp.data->Iex.GetI.descr, in collapse_AddSub_chains_BB()
4053 && collapseChain(bb, i-1, puti->ix->Iex.RdTmp.tmp, in collapse_AddSub_chains_BB()
4273 s2->Ist.WrTmp.data->Iex.GetI.descr, in guestAccessWhichMightOverlapPutI()
4274 s2->Ist.WrTmp.data->Iex.GetI.ix, in guestAccessWhichMightOverlapPutI()
4275 s2->Ist.WrTmp.data->Iex.GetI.bias in guestAccessWhichMightOverlapPutI()
4283 s2->Ist.WrTmp.data->Iex.Get.offset, in guestAccessWhichMightOverlapPutI()
4284 s2->Ist.WrTmp.data->Iex.Get.ty in guestAccessWhichMightOverlapPutI()
4327 && st->Ist.WrTmp.data->Iex.GetI.ix->tag == Iex_RdTmp) { in do_redundant_GetI_elimination()
4328 IRRegArray* descr = st->Ist.WrTmp.data->Iex.GetI.descr; in do_redundant_GetI_elimination()
4329 IRExpr* ix = st->Ist.WrTmp.data->Iex.GetI.ix; in do_redundant_GetI_elimination()
4330 Int bias = st->Ist.WrTmp.data->Iex.GetI.bias; in do_redundant_GetI_elimination()
4426 e->Iex.RdTmp.tmp += delta; in deltaIRExpr()
4432 deltaIRExpr(e->Iex.GetI.ix, delta); in deltaIRExpr()
4435 deltaIRExpr(e->Iex.Qop.details->arg1, delta); in deltaIRExpr()
4436 deltaIRExpr(e->Iex.Qop.details->arg2, delta); in deltaIRExpr()
4437 deltaIRExpr(e->Iex.Qop.details->arg3, delta); in deltaIRExpr()
4438 deltaIRExpr(e->Iex.Qop.details->arg4, delta); in deltaIRExpr()
4441 deltaIRExpr(e->Iex.Triop.details->arg1, delta); in deltaIRExpr()
4442 deltaIRExpr(e->Iex.Triop.details->arg2, delta); in deltaIRExpr()
4443 deltaIRExpr(e->Iex.Triop.details->arg3, delta); in deltaIRExpr()
4446 deltaIRExpr(e->Iex.Binop.arg1, delta); in deltaIRExpr()
4447 deltaIRExpr(e->Iex.Binop.arg2, delta); in deltaIRExpr()
4450 deltaIRExpr(e->Iex.Unop.arg, delta); in deltaIRExpr()
4453 deltaIRExpr(e->Iex.Load.addr, delta); in deltaIRExpr()
4456 for (i = 0; e->Iex.CCall.args[i]; i++) in deltaIRExpr()
4457 deltaIRExpr(e->Iex.CCall.args[i], delta); in deltaIRExpr()
4460 deltaIRExpr(e->Iex.ITE.cond, delta); in deltaIRExpr()
4461 deltaIRExpr(e->Iex.ITE.iftrue, delta); in deltaIRExpr()
4462 deltaIRExpr(e->Iex.ITE.iffalse, delta); in deltaIRExpr()
4641 && (udst->Iex.Const.con->tag == Ico_U32 in maybe_loop_unroll_BB()
4642 || udst->Iex.Const.con->tag == Ico_U64)) { in maybe_loop_unroll_BB()
4645 xxx_value = udst->Iex.Const.con->tag == Ico_U64 in maybe_loop_unroll_BB()
4646 ? udst->Iex.Const.con->Ico.U64 in maybe_loop_unroll_BB()
4647 : (Addr64)(udst->Iex.Const.con->Ico.U32); in maybe_loop_unroll_BB()
4694 vassert(con->tag == udst->Iex.Const.con->tag); in maybe_loop_unroll_BB()
4729 vassert(udst->Iex.Const.con->tag == Ico_U32 in maybe_loop_unroll_BB()
4730 || udst->Iex.Const.con->tag == Ico_U64); in maybe_loop_unroll_BB()
4731 vassert(con->tag == udst->Iex.Const.con->tag); in maybe_loop_unroll_BB()
4735 udst->Iex.Const.con->Ico.U64 = xxx_value; in maybe_loop_unroll_BB()
4738 udst->Iex.Const.con->Ico.U32 = (UInt)xxx_value; in maybe_loop_unroll_BB()
4878 for (i = 0; e->Iex.CCall.args[i]; i++) in setHints_Expr()
4879 setHints_Expr(doesLoad, getInterval, e->Iex.CCall.args[i]); in setHints_Expr()
4882 setHints_Expr(doesLoad, getInterval, e->Iex.ITE.cond); in setHints_Expr()
4883 setHints_Expr(doesLoad, getInterval, e->Iex.ITE.iftrue); in setHints_Expr()
4884 setHints_Expr(doesLoad, getInterval, e->Iex.ITE.iffalse); in setHints_Expr()
4887 setHints_Expr(doesLoad, getInterval, e->Iex.Qop.details->arg1); in setHints_Expr()
4888 setHints_Expr(doesLoad, getInterval, e->Iex.Qop.details->arg2); in setHints_Expr()
4889 setHints_Expr(doesLoad, getInterval, e->Iex.Qop.details->arg3); in setHints_Expr()
4890 setHints_Expr(doesLoad, getInterval, e->Iex.Qop.details->arg4); in setHints_Expr()
4893 setHints_Expr(doesLoad, getInterval, e->Iex.Triop.details->arg1); in setHints_Expr()
4894 setHints_Expr(doesLoad, getInterval, e->Iex.Triop.details->arg2); in setHints_Expr()
4895 setHints_Expr(doesLoad, getInterval, e->Iex.Triop.details->arg3); in setHints_Expr()
4898 setHints_Expr(doesLoad, getInterval, e->Iex.Binop.arg1); in setHints_Expr()
4899 setHints_Expr(doesLoad, getInterval, e->Iex.Binop.arg2); in setHints_Expr()
4902 setHints_Expr(doesLoad, getInterval, e->Iex.Unop.arg); in setHints_Expr()
4906 setHints_Expr(doesLoad, getInterval, e->Iex.Load.addr); in setHints_Expr()
4909 Int low = e->Iex.Get.offset; in setHints_Expr()
4910 Int high = low + sizeofIRType(e->Iex.Get.ty) - 1; in setHints_Expr()
4915 IRRegArray *descr = e->Iex.GetI.descr; in setHints_Expr()
4920 setHints_Expr(doesLoad, getInterval, e->Iex.GetI.ix); in setHints_Expr()
4960 uses[e->Iex.RdTmp.tmp]++; in aoccCount_Expr()
4964 aoccCount_Expr(uses, e->Iex.ITE.cond); in aoccCount_Expr()
4965 aoccCount_Expr(uses, e->Iex.ITE.iftrue); in aoccCount_Expr()
4966 aoccCount_Expr(uses, e->Iex.ITE.iffalse); in aoccCount_Expr()
4970 aoccCount_Expr(uses, e->Iex.Qop.details->arg1); in aoccCount_Expr()
4971 aoccCount_Expr(uses, e->Iex.Qop.details->arg2); in aoccCount_Expr()
4972 aoccCount_Expr(uses, e->Iex.Qop.details->arg3); in aoccCount_Expr()
4973 aoccCount_Expr(uses, e->Iex.Qop.details->arg4); in aoccCount_Expr()
4977 aoccCount_Expr(uses, e->Iex.Triop.details->arg1); in aoccCount_Expr()
4978 aoccCount_Expr(uses, e->Iex.Triop.details->arg2); in aoccCount_Expr()
4979 aoccCount_Expr(uses, e->Iex.Triop.details->arg3); in aoccCount_Expr()
4983 aoccCount_Expr(uses, e->Iex.Binop.arg1); in aoccCount_Expr()
4984 aoccCount_Expr(uses, e->Iex.Binop.arg2); in aoccCount_Expr()
4988 aoccCount_Expr(uses, e->Iex.Unop.arg); in aoccCount_Expr()
4992 aoccCount_Expr(uses, e->Iex.Load.addr); in aoccCount_Expr()
4996 for (i = 0; e->Iex.CCall.args[i]; i++) in aoccCount_Expr()
4997 aoccCount_Expr(uses, e->Iex.CCall.args[i]); in aoccCount_Expr()
5001 aoccCount_Expr(uses, e->Iex.GetI.ix); in aoccCount_Expr()
5120 return e->tag == Iex_Unop && e->Iex.Unop.op == op; in is_Unop()
5123 return e->tag == Iex_Binop && e->Iex.Binop.op == op; in is_Binop()
5133 IRExpr_Binop( Iop_Or32, a1->Iex.Unop.arg, in fold_IRExpr_Binop()
5134 a2->Iex.Unop.arg ) ); in fold_IRExpr_Binop()
5141 return a1->Iex.Unop.arg; in fold_IRExpr_Binop()
5157 return IRExpr_Unop( Iop_CmpwNEZ64, aa->Iex.Unop.arg ); in fold_IRExpr_Unop()
5160 && is_Unop(aa->Iex.Binop.arg1, Iop_CmpwNEZ64)) in fold_IRExpr_Unop()
5164 aa->Iex.Binop.arg1->Iex.Unop.arg, in fold_IRExpr_Unop()
5165 aa->Iex.Binop.arg2)); in fold_IRExpr_Unop()
5168 && is_Unop(aa->Iex.Binop.arg2, Iop_CmpwNEZ64)) in fold_IRExpr_Unop()
5172 aa->Iex.Binop.arg1, in fold_IRExpr_Unop()
5173 aa->Iex.Binop.arg2->Iex.Unop.arg)); in fold_IRExpr_Unop()
5178 return IRExpr_Unop(Iop_CmpNEZ64, aa->Iex.Unop.arg); in fold_IRExpr_Unop()
5181 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5186 return IRExpr_Unop( Iop_CmpwNEZ32, aa->Iex.Unop.arg ); in fold_IRExpr_Unop()
5191 return IRExpr_Unop(Iop_CmpNEZ32, aa->Iex.Unop.arg); in fold_IRExpr_Unop()
5194 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5196 if (is_Unop(aa, Iop_64to32) && is_Unop(aa->Iex.Unop.arg, Iop_CmpwNEZ64)) in fold_IRExpr_Unop()
5197 return IRExpr_Unop(Iop_CmpNEZ64, aa->Iex.Unop.arg->Iex.Unop.arg); in fold_IRExpr_Unop()
5202 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5207 return IRExpr_Unop( Iop_Left32, aa->Iex.Unop.arg ); in fold_IRExpr_Unop()
5212 return IRExpr_Unop( Iop_Left64, aa->Iex.Unop.arg ); in fold_IRExpr_Unop()
5217 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5220 return IRExpr_Unop( Iop_CmpNEZ32, aa->Iex.Unop.arg ); in fold_IRExpr_Unop()
5225 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5228 return IRExpr_Unop( Iop_CmpNEZ64, aa->Iex.Unop.arg ); in fold_IRExpr_Unop()
5233 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5236 return IRExpr_Unop(Iop_8Uto32, aa->Iex.Unop.arg); in fold_IRExpr_Unop()
5242 return IRExpr_Unop(Iop_8Uto64, aa->Iex.Unop.arg); in fold_IRExpr_Unop()
5245 return IRExpr_Unop(Iop_16Uto64, aa->Iex.Unop.arg); in fold_IRExpr_Unop()
5249 && is_Binop(aa->Iex.Unop.arg, Iop_Shr64) in fold_IRExpr_Unop()
5250 && is_Unop(aa->Iex.Unop.arg->Iex.Binop.arg1, Iop_32Uto64) in fold_IRExpr_Unop()
5251 && is_Unop(aa->Iex.Unop.arg->Iex.Binop.arg1->Iex.Unop.arg, in fold_IRExpr_Unop()
5253 return aa->Iex.Unop.arg; in fold_IRExpr_Unop()
5258 && is_Binop(aa->Iex.Unop.arg, Iop_Shl64) in fold_IRExpr_Unop()
5259 && is_Unop(aa->Iex.Unop.arg->Iex.Binop.arg1, Iop_32Uto64) in fold_IRExpr_Unop()
5260 && is_Unop(aa->Iex.Unop.arg->Iex.Binop.arg1->Iex.Unop.arg, in fold_IRExpr_Unop()
5269 aa->Iex.Unop.arg->Iex.Binop.arg1->Iex.Unop.arg->Iex.Unop.arg, in fold_IRExpr_Unop()
5270 aa->Iex.Unop.arg->Iex.Binop.arg2 in fold_IRExpr_Unop()
5278 && is_Unop(aa->Iex.Unop.arg, Iop_32to8) in fold_IRExpr_Unop()
5279 && is_Unop(aa->Iex.Unop.arg->Iex.Unop.arg, Iop_1Uto32) in fold_IRExpr_Unop()
5280 && is_Unop(aa->Iex.Unop.arg->Iex.Unop.arg->Iex.Unop.arg, in fold_IRExpr_Unop()
5283 aa->Iex.Unop.arg->Iex.Unop.arg in fold_IRExpr_Unop()
5284 ->Iex.Unop.arg->Iex.Unop.arg); in fold_IRExpr_Unop()
5304 args2 = shallowCopyIRExprVec(e->Iex.CCall.args); in atbSubst_Expr()
5308 e->Iex.CCall.cee, in atbSubst_Expr()
5309 e->Iex.CCall.retty, in atbSubst_Expr()
5313 e2 = atbSubst_Temp(env, e->Iex.RdTmp.tmp); in atbSubst_Expr()
5317 atbSubst_Expr(env, e->Iex.ITE.cond), in atbSubst_Expr()
5318 atbSubst_Expr(env, e->Iex.ITE.iftrue), in atbSubst_Expr()
5319 atbSubst_Expr(env, e->Iex.ITE.iffalse) in atbSubst_Expr()
5323 e->Iex.Qop.details->op, in atbSubst_Expr()
5324 atbSubst_Expr(env, e->Iex.Qop.details->arg1), in atbSubst_Expr()
5325 atbSubst_Expr(env, e->Iex.Qop.details->arg2), in atbSubst_Expr()
5326 atbSubst_Expr(env, e->Iex.Qop.details->arg3), in atbSubst_Expr()
5327 atbSubst_Expr(env, e->Iex.Qop.details->arg4) in atbSubst_Expr()
5331 e->Iex.Triop.details->op, in atbSubst_Expr()
5332 atbSubst_Expr(env, e->Iex.Triop.details->arg1), in atbSubst_Expr()
5333 atbSubst_Expr(env, e->Iex.Triop.details->arg2), in atbSubst_Expr()
5334 atbSubst_Expr(env, e->Iex.Triop.details->arg3) in atbSubst_Expr()
5338 e->Iex.Binop.op, in atbSubst_Expr()
5339 atbSubst_Expr(env, e->Iex.Binop.arg1), in atbSubst_Expr()
5340 atbSubst_Expr(env, e->Iex.Binop.arg2) in atbSubst_Expr()
5344 e->Iex.Unop.op, in atbSubst_Expr()
5345 atbSubst_Expr(env, e->Iex.Unop.arg) in atbSubst_Expr()
5349 e->Iex.Load.end, in atbSubst_Expr()
5350 e->Iex.Load.ty, in atbSubst_Expr()
5351 atbSubst_Expr(env, e->Iex.Load.addr) in atbSubst_Expr()
5355 e->Iex.GetI.descr, in atbSubst_Expr()
5356 atbSubst_Expr(env, e->Iex.GetI.ix), in atbSubst_Expr()
5357 e->Iex.GetI.bias in atbSubst_Expr()