Lines Matching refs:ae
3143 static IRExpr* availExpr_to_IRExpr ( AvailExpr* ae )
3146 switch (ae->tag) {
3148 return IRExpr_Unop( ae->u.Ut.op, IRExpr_RdTmp(ae->u.Ut.arg) );
3150 return IRExpr_Binop( ae->u.Btt.op,
3151 IRExpr_RdTmp(ae->u.Btt.arg1),
3152 IRExpr_RdTmp(ae->u.Btt.arg2) );
3155 *con = ae->u.Btc.con2;
3156 return IRExpr_Binop( ae->u.Btc.op,
3157 IRExpr_RdTmp(ae->u.Btc.arg1),
3161 *con = ae->u.Bct.con1;
3162 return IRExpr_Binop( ae->u.Bct.op,
3164 IRExpr_RdTmp(ae->u.Bct.arg2) );
3166 return IRExpr_Const(IRConst_F64i(ae->u.Cf64i.f64i));
3168 return IRExpr_Mux0X(IRExpr_RdTmp(ae->u.Mttt.co),
3169 IRExpr_RdTmp(ae->u.Mttt.e0),
3170 IRExpr_RdTmp(ae->u.Mttt.eX));
3172 return IRExpr_GetI(ae->u.GetIt.descr,
3173 IRExpr_RdTmp(ae->u.GetIt.ix),
3174 ae->u.GetIt.bias);
3176 Int i, n = ae->u.CCall.nArgs;
3181 TmpOrConst* tc = &ae->u.CCall.args[i];
3190 return IRExpr_CCall(ae->u.CCall.cee,
3191 ae->u.CCall.retty,
3210 static void subst_AvailExpr ( HashHW* env, AvailExpr* ae )
3213 switch (ae->tag) {
3215 ae->u.Ut.arg = subst_AvailExpr_Temp( env, ae->u.Ut.arg );
3218 ae->u.Btt.arg1 = subst_AvailExpr_Temp( env, ae->u.Btt.arg1 );
3219 ae->u.Btt.arg2 = subst_AvailExpr_Temp( env, ae->u.Btt.arg2 );
3222 ae->u.Btc.arg1 = subst_AvailExpr_Temp( env, ae->u.Btc.arg1 );
3225 ae->u.Bct.arg2 = subst_AvailExpr_Temp( env, ae->u.Bct.arg2 );
3230 ae->u.Mttt.co = subst_AvailExpr_Temp( env, ae->u.Mttt.co );
3231 ae->u.Mttt.e0 = subst_AvailExpr_Temp( env, ae->u.Mttt.e0 );
3232 ae->u.Mttt.eX = subst_AvailExpr_Temp( env, ae->u.Mttt.eX );
3235 ae->u.GetIt.ix = subst_AvailExpr_Temp( env, ae->u.GetIt.ix );
3238 Int i, n = ae->u.CCall.nArgs;;
3240 TmpOrConst* tc = &ae->u.CCall.args[i];
3254 AvailExpr* ae;
3258 ae = LibVEX_Alloc(sizeof(AvailExpr));
3259 ae->tag = Ut;
3260 ae->u.Ut.op = e->Iex.Unop.op;
3261 ae->u.Ut.arg = e->Iex.Unop.arg->Iex.RdTmp.tmp;
3262 return ae;
3268 ae = LibVEX_Alloc(sizeof(AvailExpr));
3269 ae->tag = Btt;
3270 ae->u.Btt.op = e->Iex.Binop.op;
3271 ae->u.Btt.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp;
3272 ae->u.Btt.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp;
3273 return ae;
3279 ae = LibVEX_Alloc(sizeof(AvailExpr));
3280 ae->tag = Btc;
3281 ae->u.Btc.op = e->Iex.Binop.op;
3282 ae->u.Btc.arg1 = e->Iex.Binop.arg1->Iex.RdTmp.tmp;
3283 ae->u.Btc.con2 = *(e->Iex.Binop.arg2->Iex.Const.con);
3284 return ae;
3290 ae = LibVEX_Alloc(sizeof(AvailExpr));
3291 ae->tag = Bct;
3292 ae->u.Bct.op = e->Iex.Binop.op;
3293 ae->u.Bct.arg2 = e->Iex.Binop.arg2->Iex.RdTmp.tmp;
3294 ae->u.Bct.con1 = *(e->Iex.Binop.arg1->Iex.Const.con);
3295 return ae;
3300 ae = LibVEX_Alloc(sizeof(AvailExpr));
3301 ae->tag = Cf64i;
3302 ae->u.Cf64i.f64i = e->Iex.Const.con->Ico.F64i;
3303 return ae;
3310 ae = LibVEX_Alloc(sizeof(AvailExpr));
3311 ae->tag = Mttt;
3312 ae->u.Mttt.co = e->Iex.Mux0X.cond->Iex.RdTmp.tmp;
3313 ae->u.Mttt.e0 = e->Iex.Mux0X.expr0->Iex.RdTmp.tmp;
3314 ae->u.Mttt.eX = e->Iex.Mux0X.exprX->Iex.RdTmp.tmp;
3315 return ae;
3320 ae = LibVEX_Alloc(sizeof(AvailExpr));
3321 ae->tag = GetIt;
3322 ae->u.GetIt.descr = e->Iex.GetI.descr;
3323 ae->u.GetIt.ix = e->Iex.GetI.ix->Iex.RdTmp.tmp;
3324 ae->u.GetIt.bias = e->Iex.GetI.bias;
3325 return ae;
3329 ae = LibVEX_Alloc(sizeof(AvailExpr));
3330 ae->tag = CCall;
3332 ae->u.CCall.cee = e->Iex.CCall.cee;
3333 ae->u.CCall.retty = e->Iex.CCall.retty;
3338 &ae->u.CCall.args, &ae->u.CCall.nArgs,
3341 return ae;
3357 AvailExpr* ae;
3413 ae = (AvailExpr*)aenv->key[j];
3414 if (ae->tag != GetIt)
3423 ae->u.GetIt.descr,
3424 IRExpr_RdTmp(ae->u.GetIt.ix),
3434 ae->u.GetIt.descr,
3435 IRExpr_RdTmp(ae->u.GetIt.ix),
3436 ae->u.GetIt.bias,