Lines Matching refs:ae
3577 static IRExpr* availExpr_to_IRExpr ( AvailExpr* ae ) in availExpr_to_IRExpr() argument
3580 switch (ae->tag) { in availExpr_to_IRExpr()
3582 return IRExpr_Unop( ae->u.Ut.op, IRExpr_RdTmp(ae->u.Ut.arg) ); in availExpr_to_IRExpr()
3584 return IRExpr_Binop( ae->u.Btt.op, in availExpr_to_IRExpr()
3585 IRExpr_RdTmp(ae->u.Btt.arg1), in availExpr_to_IRExpr()
3586 IRExpr_RdTmp(ae->u.Btt.arg2) ); in availExpr_to_IRExpr()
3589 *con = ae->u.Btc.con2; in availExpr_to_IRExpr()
3590 return IRExpr_Binop( ae->u.Btc.op, in availExpr_to_IRExpr()
3591 IRExpr_RdTmp(ae->u.Btc.arg1), in availExpr_to_IRExpr()
3595 *con = ae->u.Bct.con1; in availExpr_to_IRExpr()
3596 return IRExpr_Binop( ae->u.Bct.op, in availExpr_to_IRExpr()
3598 IRExpr_RdTmp(ae->u.Bct.arg2) ); in availExpr_to_IRExpr()
3600 return IRExpr_Const(IRConst_F64i(ae->u.Cf64i.f64i)); in availExpr_to_IRExpr()
3602 return IRExpr_ITE(IRExpr_RdTmp(ae->u.Ittt.co), in availExpr_to_IRExpr()
3603 IRExpr_RdTmp(ae->u.Ittt.e1), in availExpr_to_IRExpr()
3604 IRExpr_RdTmp(ae->u.Ittt.e0)); in availExpr_to_IRExpr()
3607 *con0 = ae->u.Ittc.con0; in availExpr_to_IRExpr()
3608 return IRExpr_ITE(IRExpr_RdTmp(ae->u.Ittc.co), in availExpr_to_IRExpr()
3609 IRExpr_RdTmp(ae->u.Ittc.e1), in availExpr_to_IRExpr()
3613 *con1 = ae->u.Itct.con1; in availExpr_to_IRExpr()
3614 return IRExpr_ITE(IRExpr_RdTmp(ae->u.Itct.co), in availExpr_to_IRExpr()
3616 IRExpr_RdTmp(ae->u.Itct.e0)); in availExpr_to_IRExpr()
3621 *con0 = ae->u.Itcc.con0; in availExpr_to_IRExpr()
3622 *con1 = ae->u.Itcc.con1; in availExpr_to_IRExpr()
3623 return IRExpr_ITE(IRExpr_RdTmp(ae->u.Itcc.co), in availExpr_to_IRExpr()
3627 return IRExpr_GetI(ae->u.GetIt.descr, in availExpr_to_IRExpr()
3628 IRExpr_RdTmp(ae->u.GetIt.ix), in availExpr_to_IRExpr()
3629 ae->u.GetIt.bias); in availExpr_to_IRExpr()
3631 Int i, n = ae->u.CCall.nArgs; in availExpr_to_IRExpr()
3636 vec[i] = tmpOrConst_to_IRExpr(&ae->u.CCall.args[i]); in availExpr_to_IRExpr()
3638 return IRExpr_CCall(ae->u.CCall.cee, in availExpr_to_IRExpr()
3639 ae->u.CCall.retty, in availExpr_to_IRExpr()
3643 return IRExpr_Load(ae->u.Load.end, ae->u.Load.ty, in availExpr_to_IRExpr()
3644 tmpOrConst_to_IRExpr(&ae->u.Load.addr)); in availExpr_to_IRExpr()
3671 static void subst_AvailExpr ( HashHW* env, AvailExpr* ae ) in subst_AvailExpr() argument
3674 switch (ae->tag) { in subst_AvailExpr()
3676 ae->u.Ut.arg = subst_AvailExpr_Temp( env, ae->u.Ut.arg ); in subst_AvailExpr()
3679 ae->u.Btt.arg1 = subst_AvailExpr_Temp( env, ae->u.Btt.arg1 ); in subst_AvailExpr()
3680 ae->u.Btt.arg2 = subst_AvailExpr_Temp( env, ae->u.Btt.arg2 ); in subst_AvailExpr()
3683 ae->u.Btc.arg1 = subst_AvailExpr_Temp( env, ae->u.Btc.arg1 ); in subst_AvailExpr()
3686 ae->u.Bct.arg2 = subst_AvailExpr_Temp( env, ae->u.Bct.arg2 ); in subst_AvailExpr()
3691 ae->u.Ittt.co = subst_AvailExpr_Temp( env, ae->u.Ittt.co ); in subst_AvailExpr()
3692 ae->u.Ittt.e1 = subst_AvailExpr_Temp( env, ae->u.Ittt.e1 ); in subst_AvailExpr()
3693 ae->u.Ittt.e0 = subst_AvailExpr_Temp( env, ae->u.Ittt.e0 ); in subst_AvailExpr()
3696 ae->u.Ittc.co = subst_AvailExpr_Temp( env, ae->u.Ittc.co ); in subst_AvailExpr()
3697 ae->u.Ittc.e1 = subst_AvailExpr_Temp( env, ae->u.Ittc.e1 ); in subst_AvailExpr()
3700 ae->u.Itct.co = subst_AvailExpr_Temp( env, ae->u.Itct.co ); in subst_AvailExpr()
3701 ae->u.Itct.e0 = subst_AvailExpr_Temp( env, ae->u.Itct.e0 ); in subst_AvailExpr()
3704 ae->u.Itcc.co = subst_AvailExpr_Temp( env, ae->u.Itcc.co ); in subst_AvailExpr()
3707 ae->u.GetIt.ix = subst_AvailExpr_Temp( env, ae->u.GetIt.ix ); in subst_AvailExpr()
3710 Int i, n = ae->u.CCall.nArgs;; in subst_AvailExpr()
3712 subst_AvailExpr_TmpOrConst(&ae->u.CCall.args[i], env); in subst_AvailExpr()
3717 subst_AvailExpr_TmpOrConst(&ae->u.Load.addr, env); in subst_AvailExpr()
3726 AvailExpr* ae; in irExpr_to_AvailExpr() local
3731 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3732 ae->tag = Ut; in irExpr_to_AvailExpr()
3733 ae->u.Ut.op = e->Iex.Unop.op; in irExpr_to_AvailExpr()
3734 ae->u.Ut.arg = e->Iex.Unop.arg->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3735 return ae; in irExpr_to_AvailExpr()
3742 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3743 ae->tag = Btt; in irExpr_to_AvailExpr()
3744 ae->u.Btt.op = e->Iex.Binop.op; in irExpr_to_AvailExpr()
3745 ae->u.Btt.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3746 ae->u.Btt.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3747 return ae; in irExpr_to_AvailExpr()
3750 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3751 ae->tag = Btc; in irExpr_to_AvailExpr()
3752 ae->u.Btc.op = e->Iex.Binop.op; in irExpr_to_AvailExpr()
3753 ae->u.Btc.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3754 ae->u.Btc.con2 = *(e->Iex.Binop.arg2->Iex.Const.con); in irExpr_to_AvailExpr()
3755 return ae; in irExpr_to_AvailExpr()
3759 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3760 ae->tag = Bct; in irExpr_to_AvailExpr()
3761 ae->u.Bct.op = e->Iex.Binop.op; in irExpr_to_AvailExpr()
3762 ae->u.Bct.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3763 ae->u.Bct.con1 = *(e->Iex.Binop.arg1->Iex.Const.con); in irExpr_to_AvailExpr()
3764 return ae; in irExpr_to_AvailExpr()
3770 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3771 ae->tag = Cf64i; in irExpr_to_AvailExpr()
3772 ae->u.Cf64i.f64i = e->Iex.Const.con->Ico.F64i; in irExpr_to_AvailExpr()
3773 return ae; in irExpr_to_AvailExpr()
3781 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3782 ae->tag = Ittt; in irExpr_to_AvailExpr()
3783 ae->u.Ittt.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3784 ae->u.Ittt.e1 = e->Iex.ITE.iftrue->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3785 ae->u.Ittt.e0 = e->Iex.ITE.iffalse->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3786 return ae; in irExpr_to_AvailExpr()
3789 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3790 ae->tag = Itct; in irExpr_to_AvailExpr()
3791 ae->u.Itct.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3792 ae->u.Itct.con1 = *(e->Iex.ITE.iftrue->Iex.Const.con); in irExpr_to_AvailExpr()
3793 ae->u.Itct.e0 = e->Iex.ITE.iffalse->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3794 return ae; in irExpr_to_AvailExpr()
3798 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3799 ae->tag = Ittc; in irExpr_to_AvailExpr()
3800 ae->u.Ittc.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3801 ae->u.Ittc.e1 = e->Iex.ITE.iftrue->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3802 ae->u.Ittc.con0 = *(e->Iex.ITE.iffalse->Iex.Const.con); in irExpr_to_AvailExpr()
3803 return ae; in irExpr_to_AvailExpr()
3806 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3807 ae->tag = Itcc; in irExpr_to_AvailExpr()
3808 ae->u.Itcc.co = e->Iex.ITE.cond->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3809 ae->u.Itcc.con1 = *(e->Iex.ITE.iftrue->Iex.Const.con); in irExpr_to_AvailExpr()
3810 ae->u.Itcc.con0 = *(e->Iex.ITE.iffalse->Iex.Const.con); in irExpr_to_AvailExpr()
3811 return ae; in irExpr_to_AvailExpr()
3819 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3820 ae->tag = GetIt; in irExpr_to_AvailExpr()
3821 ae->u.GetIt.descr = e->Iex.GetI.descr; in irExpr_to_AvailExpr()
3822 ae->u.GetIt.ix = e->Iex.GetI.ix->Iex.RdTmp.tmp; in irExpr_to_AvailExpr()
3823 ae->u.GetIt.bias = e->Iex.GetI.bias; in irExpr_to_AvailExpr()
3824 return ae; in irExpr_to_AvailExpr()
3829 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3830 ae->tag = CCall; in irExpr_to_AvailExpr()
3832 ae->u.CCall.cee = e->Iex.CCall.cee; in irExpr_to_AvailExpr()
3833 ae->u.CCall.retty = e->Iex.CCall.retty; in irExpr_to_AvailExpr()
3838 &ae->u.CCall.args, &ae->u.CCall.nArgs, in irExpr_to_AvailExpr()
3841 return ae; in irExpr_to_AvailExpr()
3850 ae = LibVEX_Alloc_inline(sizeof(AvailExpr)); in irExpr_to_AvailExpr()
3851 ae->tag = Load; in irExpr_to_AvailExpr()
3852 ae->u.Load.end = e->Iex.Load.end; in irExpr_to_AvailExpr()
3853 ae->u.Load.ty = e->Iex.Load.ty; in irExpr_to_AvailExpr()
3854 irExpr_to_TmpOrConst(&ae->u.Load.addr, e->Iex.Load.addr); in irExpr_to_AvailExpr()
3855 return ae; in irExpr_to_AvailExpr()
3879 AvailExpr* ae; in do_cse_BB() local
3936 ae = (AvailExpr*)aenv->key[j]; in do_cse_BB()
3937 if (ae->tag != GetIt && ae->tag != Load) in do_cse_BB()
3944 if (ae->tag == Load) { in do_cse_BB()
3954 ae->u.GetIt.descr, in do_cse_BB()
3955 IRExpr_RdTmp(ae->u.GetIt.ix), in do_cse_BB()
3965 ae->u.GetIt.descr, in do_cse_BB()
3966 IRExpr_RdTmp(ae->u.GetIt.ix), in do_cse_BB()
3967 ae->u.GetIt.bias, in do_cse_BB()