Home | History | Annotate | Download | only in priv

Lines Matching refs:Ist

411          if (isIRAtom(st->Ist.Put.data)) {
417 e1 = flatten_Expr(bb, st->Ist.Put.data);
418 addStmtToIRSB(bb, IRStmt_Put(st->Ist.Put.offset, e1));
422 puti = st->Ist.PutI.details;
429 if (isFlat(st->Ist.WrTmp.data)) {
435 e1 = flatten_Expr(bb, st->Ist.WrTmp.data);
436 addStmtToIRSB(bb, IRStmt_WrTmp(st->Ist.WrTmp.tmp, e1));
440 e1 = flatten_Expr(bb, st->Ist.Store.addr);
441 e2 = flatten_Expr(bb, st->Ist.Store.data);
442 addStmtToIRSB(bb, IRStmt_Store(st->Ist.Store.end, e1,e2));
445 sg = st->Ist.StoreG.details;
452 lg = st->Ist.LoadG.details;
460 cas = st->Ist.CAS.details;
471 e1 = flatten_Expr(bb, st->Ist.LLSC.addr);
472 e2 = st->Ist.LLSC.storedata
473 ? flatten_Expr(bb, st->Ist.LLSC.storedata)
475 addStmtToIRSB(bb, IRStmt_LLSC(st->Ist.LLSC.end,
476 st->Ist.LLSC.result, e1, e2));
479 d = st->Ist.Dirty.details;
502 e1 = flatten_Expr(bb, st->Ist.AbiHint.base);
503 e2 = flatten_Expr(bb, st->Ist.AbiHint.nia);
504 addStmtToIRSB(bb, IRStmt_AbiHint(e1, st->Ist.AbiHint.len, e2));
507 e1 = flatten_Expr(bb, st->Ist.Exit.guard);
508 addStmtToIRSB(bb, IRStmt_Exit(e1, st->Ist.Exit.jk,
509 st->Ist.Exit.dst,
510 st->Ist.Exit.offsIP));
629 && st->Ist.WrTmp.data->tag == Iex_Get) {
632 IRExpr* get = st->Ist.WrTmp.data;
644 == st->Ist.WrTmp.data->Iex.Get.ty );
651 bb->stmts[i] = IRStmt_WrTmp(st->Ist.WrTmp.tmp, valE);
657 (HWord)(void*)(IRExpr_RdTmp(st->Ist.WrTmp.tmp)) );
666 key = mk_key_GetPut( st->Ist.Put.offset,
667 typeOfIRExpr(bb->tyenv,st->Ist.Put.data) );
670 key = mk_key_GetIPutI( st->Ist.PutI.details->descr );
682 IRDirty* d = st->Ist.Dirty.details;
699 vassert(isIRAtom(st->Ist.Put.data));
700 addToHHW( env, (HWord)key, (HWord)(st->Ist.Put.data));
734 e = st->Ist.WrTmp.data;
770 vassert(isIRAtom(st->Ist.AbiHint.base));
771 vassert(isIRAtom(st->Ist.AbiHint.nia));
783 vassert(isIRAtom(st->Ist.Store.addr));
784 vassert(isIRAtom(st->Ist.Store.data));
788 IRStoreG* sg = st->Ist.StoreG.details;
796 IRLoadG* lg = st->Ist.LoadG.details;
804 vassert(isIRAtom(st->Ist.Exit.guard));
808 vassert(isIRAtom(st->Ist.Put.data));
812 vassert(isIRAtom(st->Ist.PutI.details->ix));
813 vassert(isIRAtom(st->Ist.PutI.details->data));
930 //vassert(isIRAtom(st->Ist.Exit.guard));
932 //key = mk_key_GetPut(st->Ist.Exit.offsIP,
933 // typeOfIRConst(st->Ist.Exit.dst));
948 key = mk_key_GetPut( st->Ist.Put.offset,
949 typeOfIRExpr(bb->tyenv,st->Ist.Put.data) );
950 vassert(isIRAtom(st->Ist.Put.data));
954 key = mk_key_GetIPutI( st->Ist.PutI.details->descr );
955 vassert(isIRAtom(st->Ist.PutI.details->ix));
956 vassert(isIRAtom(st->Ist.PutI.details->data));
2554 vassert(isIRAtom(st->Ist.AbiHint.base));
2555 vassert(isIRAtom(st->Ist.AbiHint.nia));
2557 fold_Expr(env, subst_Expr(env, st->Ist.AbiHint.base)),
2558 st->Ist.AbiHint.len,
2559 fold_Expr(env, subst_Expr(env, st->Ist.AbiHint.nia))
2562 vassert(isIRAtom(st->Ist.Put.data));
2564 st->Ist.Put.offset,
2565 fold_Expr(env, subst_Expr(env, st->Ist.Put.data))
2570 puti = st->Ist.PutI.details;
2581 /* This is the one place where an expr (st->Ist.WrTmp.data) is
2584 st->Ist.WrTmp.tmp,
2585 fold_Expr(env, subst_Expr(env, st->Ist.WrTmp.data))
2589 vassert(isIRAtom(st->Ist.Store.addr));
2590 vassert(isIRAtom(st->Ist.Store.data));
2592 st->Ist.Store.end,
2593 fold_Expr(env, subst_Expr(env, st->Ist.Store.addr)),
2594 fold_Expr(env, subst_Expr(env, st->Ist.Store.data))
2598 IRStoreG* sg = st->Ist.StoreG.details;
2625 IRLoadG* lg = st->Ist.LoadG.details;
2655 cas = st->Ist.CAS.details;
2675 vassert(isIRAtom(st->Ist.LLSC.addr));
2676 if (st->Ist.LLSC.storedata)
2677 vassert(isIRAtom(st->Ist.LLSC.storedata));
2679 st->Ist.LLSC.end,
2680 st->Ist.LLSC.result,
2681 fold_Expr(env, subst_Expr(env, st->Ist.LLSC.addr)),
2682 st->Ist.LLSC.storedata
2683 ? fold_Expr(env, subst_Expr(env, st->Ist.LLSC.storedata))
2690 d = st->Ist.Dirty.details;
2711 return IRStmt_IMark(st->Ist.IMark.addr,
2712 st->Ist.IMark.len,
2713 st->Ist.IMark.delta);
2719 return IRStmt_MBE(st->Ist.MBE.event);
2723 vassert(isIRAtom(st->Ist.Exit.guard));
2724 fcond = fold_Expr(env, subst_Expr(env, st->Ist.Exit.guard));
2744 return IRStmt_Exit(fcond, st->Ist.Exit.jk,
2745 st->Ist.Exit.dst, st->Ist.Exit.offsIP);
2807 vassert(env[(Int)(st2->Ist.WrTmp.tmp)] == NULL);
2808 env[(Int)(st2->Ist.WrTmp.tmp)] = st2->Ist.WrTmp.data;
2811 if (st2->Ist.WrTmp.data->tag == Iex_RdTmp)
2818 if (st2->Ist.WrTmp.data->tag == Iex_Const
2819 && st2->Ist.WrTmp.data->Iex.Const.con->tag != Ico_F64i) {
2827 IRLoadG* lg = st2->Ist.LoadG.details;
2880 IRLoadG* lg = lgu->Ist.LoadG.details;
2990 addUses_Expr(set, st->Ist.AbiHint.base);
2991 addUses_Expr(set, st->Ist.AbiHint.nia);
2994 addUses_Expr(set, st->Ist.PutI.details->ix);
2995 addUses_Expr(set, st->Ist.PutI.details->data);
2998 addUses_Expr(set, st->Ist.WrTmp.data);
3001 addUses_Expr(set, st->Ist.Put.data);
3004 addUses_Expr(set, st->Ist.Store.addr);
3005 addUses_Expr(set, st->Ist.Store.data);
3008 IRStoreG* sg = st->Ist.StoreG.details;
3015 IRLoadG* lg = st->Ist.LoadG.details;
3022 cas = st->Ist.CAS.details;
3032 addUses_Expr(set, st->Ist.LLSC.addr);
3033 if (st->Ist.LLSC.storedata)
3034 addUses_Expr(set, st->Ist.LLSC.storedata);
3037 d = st->Ist.Dirty.details;
3052 addUses_Expr(set, st->Ist.Exit.guard);
3116 && isOneU1(st->Ist.Exit.guard))
3119 && set[(Int)(st->Ist.WrTmp.tmp)] == False) {
3130 && st->Ist.Dirty.details->guard
3131 && isZeroU1(st->Ist.Dirty.details->guard)) {
3151 = IRExpr_Const( bb->stmts[i_unconditional_exit]->Ist.Exit.dst );
3153 = bb->stmts[i_unconditional_exit]->Ist.Exit.jk;
3155 = bb->stmts[i_unconditional_exit]->Ist.Exit.offsIP;
3182 || st->Ist.WrTmp.data->tag != Iex_CCall)
3185 ex = (*specHelper)( st->Ist.WrTmp.data->Iex.CCall.cee->name,
3186 st->Ist.WrTmp.data->Iex.CCall.args,
3195 = IRStmt_WrTmp(st->Ist.WrTmp.tmp, ex);
3199 ppIRExpr(st->Ist.WrTmp.data);
3951 st->Ist.Put.offset,
3952 typeOfIRExpr(bb->tyenv,st->Ist.Put.data)
3958 IRPutI *puti = st->Ist.PutI.details;
3986 t = st->Ist.WrTmp.tmp;
3987 eprime = irExpr_to_AvailExpr(st->Ist.WrTmp.data, allowLoadsToBeCSEd);
4080 if (st->Ist.WrTmp.tmp != var)
4082 e = st->Ist.WrTmp.data;
4118 && isAdd32OrSub32(st->Ist.WrTmp.data, &var, &con)) {
4131 st->Ist.WrTmp.tmp,
4152 && st->Ist.WrTmp.data->tag == Iex_GetI
4153 && st->Ist.WrTmp.data->Iex.GetI.ix->tag == Iex_RdTmp
4154 && collapseChain(bb, i-1, st->Ist.WrTmp.data->Iex.GetI.ix
4161 con2 += st->Ist.WrTmp.data->Iex.GetI.bias;
4164 st->Ist.WrTmp.tmp,
4165 IRExpr_GetI(st->Ist.WrTmp.data->Iex.GetI.descr,
4176 IRPutI *puti = st->Ist.PutI.details;
4244 st->Ist.Put.offset,
4245 typeOfIRExpr(bb->tyenv,st->Ist.Put.data) );
4263 IRPutI *puti = st->Ist.PutI.details;
4294 if (st->Ist.Dirty.details->nFxState > 0)
4316 IRPutI *p1 = pi->Ist.PutI.details;
4317 IRPutI *p2 = s2->Ist.PutI.details;
4343 IRPutI *p1 = pi->Ist.PutI.details;
4367 if (s2->Ist.Dirty.details->nFxState > 0)
4372 vassert(isIRAtom(s2->Ist.Put.data));
4376 s2->Ist.Put.offset,
4377 typeOfIRExpr(tyenv,s2->Ist.Put.data)
4382 IRPutI *p2 = s2->Ist.PutI.details;
4395 if (s2->Ist.WrTmp.data->tag == Iex_GetI) {
4399 s2->Ist.WrTmp.data->Iex.GetI.descr,
4400 s2->Ist.WrTmp.data->Iex.GetI.ix,
4401 s2->Ist.WrTmp.data->Iex.GetI.bias
4405 if (s2->Ist.WrTmp.data->tag == Iex_Get) {
4409 s2->Ist.WrTmp.data->Iex.Get.offset,
4410 s2->Ist.WrTmp.data->Iex.Get.ty
4417 vassert(isIRAtom(s2->Ist.Store.addr));
4418 vassert(isIRAtom(s2->Ist.Store.data));
4452 && st->Ist.WrTmp.data->tag == Iex_GetI
4453 && st->Ist.WrTmp.data->Iex.GetI.ix->tag == Iex_RdTmp) {
4454 IRRegArray* descr = st->Ist.WrTmp.data->Iex.GetI.descr;
4455 IRExpr* ix = st->Ist.WrTmp.data->Iex.GetI.ix;
4456 Int bias = st->Ist.WrTmp.data->Iex.GetI.bias;
4464 ppIRExpr(st->Ist.WrTmp.data);
4469 bb->stmts[i] = IRStmt_WrTmp(st->Ist.WrTmp.tmp, replacement);
4609 deltaIRExpr(st->Ist.AbiHint.base, delta);
4610 deltaIRExpr(st->Ist.AbiHint.nia, delta);
4613 deltaIRExpr(st->Ist.Put.data, delta);
4616 deltaIRExpr(st->Ist.PutI.details->ix, delta);
4617 deltaIRExpr(st->Ist.PutI.details->data, delta);
4620 st->Ist.WrTmp.tmp += delta;
4621 deltaIRExpr(st->Ist.WrTmp.data, delta);
4624 deltaIRExpr(st->Ist.Exit.guard, delta);
4627 deltaIRExpr(st->Ist.Store.addr, delta);
4628 deltaIRExpr(st->Ist.Store.data, delta);
4631 IRStoreG* sg = st->Ist.StoreG.details;
4638 IRLoadG* lg = st->Ist.LoadG.details;
4646 if (st->Ist.CAS.details->oldHi != IRTemp_INVALID)
4647 st->Ist.CAS.details->oldHi += delta;
4648 st->Ist.CAS.details->oldLo += delta;
4649 deltaIRExpr(st->Ist.CAS.details->addr, delta);
4650 if (st->Ist.CAS.details->expdHi)
4651 deltaIRExpr(st->Ist.CAS.details->expdHi, delta);
4652 deltaIRExpr(st->Ist.CAS.details->expdLo, delta);
4653 if (st->Ist.CAS.details->dataHi)
4654 deltaIRExpr(st->Ist.CAS.details->dataHi, delta);
4655 deltaIRExpr(st->Ist.CAS.details->dataLo, delta);
4658 st->Ist.LLSC.result += delta;
4659 deltaIRExpr(st->Ist.LLSC.addr, delta);
4660 if (st->Ist.LLSC.storedata)
4661 deltaIRExpr(st->Ist.LLSC.storedata, delta);
4664 d = st->Ist.Dirty.details;
4809 if (st->Ist.Exit.jk != Ijk_Boring)
4812 con = st->Ist.Exit.dst;
4816 ? st->Ist.Exit.dst->Ico.U64
4817 : (Addr64)(st->Ist.Exit.dst->Ico.U32);
4850 con = st->Ist.Exit.dst;
4869 st->Ist.Exit.guard
4870 = IRExpr_Unop(Iop_Not1,deepCopyIRExpr(st->Ist.Exit.guard));
5152 aoccCount_Expr(uses, st->Ist.AbiHint.base);
5153 aoccCount_Expr(uses, st->Ist.AbiHint.nia);
5156 aoccCount_Expr(uses, st->Ist.WrTmp.data);
5159 aoccCount_Expr(uses, st->Ist.Put.data);
5162 aoccCount_Expr(uses, st->Ist.PutI.details->ix);
5163 aoccCount_Expr(uses, st->Ist.PutI.details->data);
5166 aoccCount_Expr(uses, st->Ist.Store.addr);
5167 aoccCount_Expr(uses, st->Ist.Store.data);
5170 IRStoreG* sg = st->Ist.StoreG.details;
5177 IRLoadG* lg = st->Ist.LoadG.details;
5184 cas = st->Ist.CAS.details;
5194 aoccCount_Expr(uses, st->Ist.LLSC.addr);
5195 if (st->Ist.LLSC.storedata)
5196 aoccCount_Expr(uses, st->Ist.LLSC.storedata);
5199 d = st->Ist.Dirty.details;
5214 aoccCount_Expr(uses, st->Ist.Exit.guard);
5511 atbSubst_Expr(env, st->Ist.AbiHint.base),
5512 st->Ist.AbiHint.len,
5513 atbSubst_Expr(env, st->Ist.AbiHint.nia)
5517 st->Ist.Store.end,
5518 atbSubst_Expr(env, st->Ist.Store.addr),
5519 atbSubst_Expr(env, st->Ist.Store.data)
5522 IRStoreG* sg = st->Ist.StoreG.details;
5529 IRLoadG* lg = st->Ist.LoadG.details;
5537 st->Ist.WrTmp.tmp,
5538 atbSubst_Expr(env, st->Ist.WrTmp.data)
5542 st->Ist.Put.offset,
5543 atbSubst_Expr(env, st->Ist.Put.data)
5546 puti = st->Ist.PutI.details;
5555 atbSubst_Expr(env, st->Ist.Exit.guard),
5556 st->Ist.Exit.jk,
5557 st->Ist.Exit.dst,
5558 st->Ist.Exit.offsIP
5561 return IRStmt_IMark(st->Ist.IMark.addr,
5562 st->Ist.IMark.len,
5563 st->Ist.IMark.delta);
5567 return IRStmt_MBE(st->Ist.MBE.event);
5569 cas = st->Ist.CAS.details;
5581 st->Ist.LLSC.end,
5582 st->Ist.LLSC.result,
5583 atbSubst_Expr(env, st->Ist.LLSC.addr),
5584 st->Ist.LLSC.storedata
5585 ? atbSubst_Expr(env, st->Ist.LLSC.storedata) : NULL
5588 d = st->Ist.Dirty.details;
5676 Int offset = st->Ist.Put.offset;
5677 Int size = sizeofIRType(typeOfIRExpr(bb->tyenv, st->Ist.Put.data));
5688 IRRegArray *descr = st->Ist.PutI.details->descr;
5706 return dirty_helper_puts(st->Ist.Dirty.details,
5753 UInt len = st->Ist.IMark.len;
5754 Addr mga = st->Ist.IMark.addr + (len < 1 ? 1 : len) - 1;
5827 if (st->tag == Ist_WrTmp && uses[st->Ist.WrTmp.tmp] <= 1) {
5832 if (uses[st->Ist.WrTmp.tmp] == 0) {
5836 vassert(uses[st->Ist.WrTmp.tmp] == 1);
5840 e = st->Ist.WrTmp.data;
5842 addToEnvFront(env, st->Ist.WrTmp.tmp, e2);
5875 && dirty_helper_stores(st->Ist.Dirty.details))
6251 IRTemp t = st->Ist.WrTmp.tmp;
6253 env[t] = st->Ist.WrTmp.data;
6261 vassert(isIRAtom(st->Ist.AbiHint.base));
6262 vassert(isIRAtom(st->Ist.AbiHint.nia));
6265 vassert(isIRAtom(st->Ist.Put.data));
6268 IRPutI* puti = st->Ist.PutI.details;
6274 /* This is the one place where an expr (st->Ist.WrTmp.data) is
6277 = do_XOR_TRANSFORMS_IRExpr(env, st->Ist.WrTmp.data);
6280 st->Ist.WrTmp.data = mb_new_data;
6287 vassert(isIRAtom(st->Ist.Store.addr));
6288 vassert(isIRAtom(st->Ist.Store.data));
6291 IRStoreG* sg = st->Ist.StoreG.details;
6298 IRLoadG* lg = st->Ist.LoadG.details;
6305 IRCAS* cas = st->Ist.CAS.details;
6314 vassert(isIRAtom(st->Ist.LLSC.addr));
6315 if (st->Ist.LLSC.storedata)
6316 vassert(isIRAtom(st->Ist.LLSC.storedata));
6319 IRDirty* d = st->Ist.Dirty.details;
6337 vassert(isIRAtom(st->Ist.Exit.guard));
6472 vassert(isIRAtom(st->Ist.AbiHint.base));
6473 vassert(isIRAtom(st->Ist.AbiHint.nia));
6479 if (st->Ist.WrTmp.data->tag == Iex_GetI)
6481 switch (typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp)) {
6497 vassert(isIRAtom(st->Ist.Put.data));
6500 vassert(isIRAtom(st->Ist.Store.addr));
6501 vassert(isIRAtom(st->Ist.Store.data));
6504 IRStoreG* sg = st->Ist.StoreG.details;
6511 IRLoadG* lg = st->Ist.LoadG.details;
6518 cas = st->Ist.CAS.details;
6526 vassert(isIRAtom(st->Ist.LLSC.addr));
6527 if (st->Ist.LLSC.storedata)
6528 vassert(isIRAtom(st->Ist.LLSC.storedata));
6531 d = st->Ist.Dirty.details;
6546 vassert(isIRAtom(st->Ist.Exit.guard));