Home | History | Annotate | Download | only in priv

Lines Matching refs:hreg

138    - A mapping from IRTemp to HReg.  This tells the insn selector
147 32-bit virtual HReg, which holds the high half
177 HReg* vregmap;
178 HReg* vregmapHI;
193 static HReg lookupIRTemp ( ISelEnv* env, IRTemp tmp )
200 static void lookupIRTemp64 ( HReg* vrHI, HReg* vrLO, ISelEnv* env, IRTemp tmp )
218 static HReg newVRegI ( ISelEnv* env )
220 HReg reg = mkHReg(True/*virtual reg*/, HRcInt32, 0/*enc*/, env->vreg_ctr);
225 static HReg newVRegF ( ISelEnv* env )
227 HReg reg = mkHReg(True/*virtual reg*/, HRcFlt64, 0/*enc*/, env->vreg_ctr);
232 static HReg newVRegV ( ISelEnv* env )
234 HReg reg = mkHReg(True/*virtual reg*/, HRcVec128, 0/*enc*/, env->vreg_ctr);
259 static HReg iselIntExpr_R_wrk ( ISelEnv* env, const IRExpr* e );
260 static HReg iselIntExpr_R ( ISelEnv* env, const IRExpr* e );
265 static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
267 static void iselInt64Expr ( HReg* rHi, HReg* rLo,
273 static HReg iselDblExpr_wrk ( ISelEnv* env, const IRExpr* e );
274 static HReg iselDblExpr ( ISelEnv* env, const IRExpr* e );
276 static HReg iselFltExpr_wrk ( ISelEnv* env, const IRExpr* e );
277 static HReg iselFltExpr ( ISelEnv* env, const IRExpr* e );
279 static HReg iselVecExpr_wrk ( ISelEnv* env, const IRExpr* e );
280 static HReg iselVecExpr ( ISelEnv* env, const IRExpr* e );
289 static X86Instr* mk_iMOVsd_RR ( HReg src, HReg dst )
299 static X86Instr* mk_vMOVsd_RR ( HReg src, HReg dst )
347 static Int pushArg ( ISelEnv* env, IRExpr* arg, HReg r_vecRetAddr )
366 HReg rHi, rLo;
435 HReg argregs[3];
436 HReg tmpregs[3];
523 HReg r_vecRetAddr = INVALID_HREG;
698 HReg tmp, roff;
762 HReg rrm = iselIntExpr_R(env, mode);
763 HReg rrm2 = newVRegI(env);
788 static HReg do_sse_Not128 ( ISelEnv* env, HReg src )
790 HReg dst = newVRegV(env);
810 static void roundToF64 ( ISelEnv* env, HReg reg )
838 static HReg iselIntExpr_R ( ISelEnv* env, const IRExpr* e )
840 HReg r = iselIntExpr_R_wrk(env, e);
851 static HReg iselIntExpr_R_wrk ( ISelEnv* env, const IRExpr* e )
867 HReg dst = newVRegI(env);
897 HReg junk = newVRegF(env);
898 HReg dst = newVRegI(env);
899 HReg srcL = iselDblExpr(env, triop->arg2);
900 HReg srcR = iselDblExpr(env, triop->arg3);
926 HReg dst = newVRegI(env);
927 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
953 HReg dst = newVRegI(env);
954 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
990 HReg dst = newVRegI(env);
993 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1030 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1040 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1041 HReg dst = newVRegI(env);
1042 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1050 HReg hi8 = newVRegI(env);
1051 HReg lo8 = newVRegI(env);
1052 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1053 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1063 HReg hi16 = newVRegI(env);
1064 HReg lo16 = newVRegI(env);
1065 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1066 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1077 HReg a16 = newVRegI(env);
1078 HReg b16 = newVRegI(env);
1079 HReg a16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1080 HReg b16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1099 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1100 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1101 HReg dst = newVRegI(env);
1112 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1113 HReg dst = newVRegI(env);
1165 HReg dst = newVRegI(env);
1166 HReg src = iselIntExpr_R(env, expr32);
1181 HReg dst = newVRegI(env);
1195 HReg dst = newVRegI(env);
1209 HReg dst = newVRegI(env);
1219 HReg dst;
1233 HReg dst;
1248 HReg dst = newVRegI(env);
1249 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1259 HReg dst = newVRegI(env);
1260 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1270 HReg dst = newVRegI(env);
1271 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1277 HReg rHi, rLo;
1282 HReg rHi, rLo;
1288 HReg dst = newVRegI(env);
1289 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1297 HReg dst = newVRegI(env);
1306 HReg dst = newVRegI(env);
1315 HReg dst = newVRegI(env);
1316 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1324 HReg tmp = newVRegI(env);
1325 HReg dst = newVRegI(env);
1326 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1336 HReg dst = newVRegI(env);
1337 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1348 HReg dst = newVRegI(env);
1349 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1357 HReg dst = newVRegI(env);
1358 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1372 HReg rf = iselFltExpr(env, e->Iex.Unop.arg);
1373 HReg dst = newVRegI(env);
1401 HReg xLo, xHi;
1402 HReg dst = newVRegI(env);
1423 HReg dst = newVRegI(env);
1432 HReg dst = newVRegI(env);
1448 HReg dst = newVRegI(env);
1462 HReg dst = newVRegI(env);
1488 HReg r = newVRegI(env);
1497 HReg r1 = iselIntExpr_R(env, e->Iex.ITE.iftrue);
1499 HReg dst = newVRegI(env);
1579 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1->Iex.Binop.arg1);
1580 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg1
1595 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1596 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1606 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1613 HReg r1 = iselIntExpr_R(env, e);
1676 HReg r = iselIntExpr_R ( env, e );
1723 HReg r = iselIntExpr_R ( env, e );
1767 HReg r = iselIntExpr_R ( env, e );
1795 HReg r32 = lookupIRTemp(env, e->Iex.RdTmp.tmp);
1803 HReg r;
1856 HReg r0 = iselIntExpr_R(env, mi.bindee[0]);
1858 HReg tmp = newVRegI(env);
1871 HReg r0 = iselIntExpr_R(env, mi.bindee[0]);
1873 HReg tmp = newVRegI(env);
1893 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
1907 HReg hi1, lo1, hi2, lo2;
1908 HReg tmp = newVRegI(env);
1922 HReg hi, lo;
1923 HReg tmp = newVRegI(env);
1939 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1947 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1949 HReg r = newVRegI(env);
1968 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1970 HReg r = newVRegI(env);
2022 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2041 HReg hi1, hi2, lo1, lo2;
2042 HReg tHi = newVRegI(env);
2043 HReg tLo = newVRegI(env);
2072 static void iselInt64Expr ( HReg* rHi, HReg* rLo, ISelEnv* env,
2086 static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo, ISelEnv* env,
2099 HReg tLo = newVRegI(env);
2100 HReg tHi = newVRegI(env);
2124 HReg tLo, tHi;
2142 HReg tLo = newVRegI(env);
2143 HReg tHi = newVRegI(env);
2157 HReg tLo = newVRegI(env);
2158 HReg tHi = newVRegI(env);
2168 HReg e0Lo, e0Hi, e1Lo, e1Hi;
2169 HReg tLo = newVRegI(env);
2170 HReg tHi = newVRegI(env);
2194 HReg tLo = newVRegI(env);
2195 HReg tHi = newVRegI(env);
2198 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2214 HReg sHi, sLo;
2215 HReg tLo = newVRegI(env);
2216 HReg tHi = newVRegI(env);
2234 HReg xLo, xHi, yLo, yHi;
2235 HReg tLo = newVRegI(env);
2236 HReg tHi = newVRegI(env);
2258 HReg tLo = newVRegI(env);
2259 HReg tHi = newVRegI(env);
2260 HReg xLo, xHi;
2273 HReg xLo, xHi, yLo, yHi;
2274 HReg tLo = newVRegI(env);
2275 HReg tHi = newVRegI(env);
2319 HReg rAmt, sHi, sLo, tHi, tLo, tTemp;
2361 HReg rAmt, sHi, sLo, tHi, tLo, tTemp;
2388 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2389 HReg tLo = newVRegI(env);
2390 HReg tHi = newVRegI(env);
2537 HReg xLo, xHi, yLo, yHi;
2538 HReg tLo = newVRegI(env);
2539 HReg tHi = newVRegI(env);
2578 HReg xLo, xHi;
2579 HReg tLo = newVRegI(env);
2580 HReg tHi = newVRegI(env);
2608 HReg tLo = newVRegI(env);
2609 HReg tHi = newVRegI(env);
2610 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2621 HReg tLo = newVRegI(env);
2622 HReg tHi = newVRegI(env);
2623 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2633 HReg tLo = newVRegI(env);
2634 HReg tHi = newVRegI(env);
2635 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2649 HReg tLo = newVRegI(env);
2650 HReg tHi = newVRegI(env);
2651 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
2669 HReg tLo = newVRegI(env);
2670 HReg tHi = newVRegI(env);
2683 HReg tLo = newVRegI(env);
2684 HReg tHi = newVRegI(env);
2685 HReg sHi, sLo;
2698 HReg yLo, yHi;
2699 HReg tLo = newVRegI(env);
2700 HReg tHi = newVRegI(env);
2729 HReg xHi,xLo,yHi,yLo;
2730 HReg xBoth = newVRegI(env);
2731 HReg merged = newVRegI(env);
2732 HReg tmp2 = newVRegI(env);
2757 HReg srcLo, srcHi;
2758 HReg tmp1 = newVRegI(env);
2759 HReg tmp2 = newVRegI(env);
2782 HReg rf = iselDblExpr(env, e->Iex.Unop.arg);
2783 HReg tLo = newVRegI(env);
2784 HReg tHi = newVRegI(env);
2819 HReg xLo, xHi;
2820 HReg tLo = newVRegI(env);
2821 HReg tHi = newVRegI(env);
2843 HReg tLo = newVRegI(env);
2844 HReg tHi = newVRegI(env);
2876 static HReg iselFltExpr ( ISelEnv* env, const IRExpr* e )
2878 HReg r = iselFltExpr_wrk( env, e );
2888 static HReg iselFltExpr_wrk ( ISelEnv* env, const IRExpr* e )
2899 HReg res = newVRegF(env);
2911 HReg dst = newVRegF(env);
2912 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2922 HReg res = newVRegF(env);
2931 HReg dst = newVRegF(env);
2943 HReg rf = iselFltExpr(env, e->Iex.Binop.arg2);
2944 HReg dst = newVRegF(env);
2993 static HReg iselDblExpr ( ISelEnv* env, const IRExpr* e )
2995 HReg r = iselDblExpr_wrk( env, e );
3005 static HReg iselDblExpr_wrk ( ISelEnv* env, const IRExpr* e )
3017 HReg freg = newVRegF(env);
3042 HReg res = newVRegF(env);
3052 HReg res = newVRegF(env);
3062 HReg res = newVRegF(env);
3084 HReg res = newVRegF(env);
3085 HReg srcL = iselDblExpr(env, triop->arg2);
3086 HReg srcR = iselDblExpr(env, triop->arg3);
3098 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
3099 HReg dst = newVRegF(env);
3117 HReg dst = newVRegF(env);
3118 HReg rHi,rLo;
3148 HReg res = newVRegF(env);
3149 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
3173 HReg res = newVRegF(env);
3174 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
3185 HReg dst = newVRegF(env);
3186 HReg ri = iselIntExpr_R(env, e->Iex.Unop.arg);
3198 HReg dst = newVRegF(env);
3199 HReg rHi, rLo;
3213 HReg res = iselFltExpr(env, e->Iex.Unop.arg);
3225 HReg r1 = iselDblExpr(env, e->Iex.ITE.iftrue);
3226 HReg r0 = iselDblExpr(env, e->Iex.ITE.iffalse);
3227 HReg dst = newVRegF(env);
3244 static HReg iselVecExpr ( ISelEnv* env, const IRExpr* e )
3246 HReg r = iselVecExpr_wrk( env, e );
3257 static HReg iselVecExpr_wrk ( ISelEnv* env, const IRExpr* e )
3289 HReg dst = newVRegV(env);
3300 HReg dst = newVRegV(env);
3307 HReg dst = newVRegV(env);
3323 HReg dst = newVRegV(env);
3332 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3352 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3353 HReg tmp = newVRegV(env);
3354 HReg dst = newVRegV(env);
3375 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3376 HReg dst = newVRegV(env);
3377 HReg r32 = newVRegI(env);
3395 HReg arg;
3396 HReg vec0 = newVRegV(env);
3397 HReg vec1 = newVRegV(env);
3398 HReg dst = newVRegV(env);
3422 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3423 HReg dst = newVRegV(env);
3439 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3440 HReg dst = newVRegV(env);
3455 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3456 HReg dst = newVRegV(env);
3464 HReg dst = newVRegV(env);
3474 HReg rHi, rLo;
3475 HReg dst = newVRegV(env);
3498 HReg arg = iselVecExpr(env, e->Iex.Binop.arg2);
3499 HReg dst = newVRegV(env);
3509 HReg dst = newVRegV(env);
3510 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3511 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3522 HReg dst = newVRegV(env);
3523 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3524 HReg srcIhi, srcIlo;
3538 HReg r3, r2, r1, r0;
3543 HReg dst = newVRegV(env);
3568 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3569 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3570 HReg dst = newVRegV(env);
3584 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3585 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3586 HReg dst = newVRegV(env);
3604 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3605 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3606 HReg dst = newVRegV(env);
3623 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3624 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3625 HReg dst = newVRegV(env);
3692 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3693 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3694 HReg dst = newVRegV(env);
3716 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3719 HReg ereg = newVRegV(env);
3720 HReg dst = newVRegV(env);
3743 HReg dst = newVRegV(env);
3744 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3745 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3746 HReg argp = newVRegI(env);
3803 HReg argL = iselVecExpr(env, triop->arg2);
3804 HReg argR = iselVecExpr(env, triop->arg3);
3805 HReg dst = newVRegV(env);
3819 HReg argL = iselVecExpr(env, triop->arg2);
3820 HReg argR = iselVecExpr(env, triop->arg3);
3821 HReg dst = newVRegV(env);
3837 HReg r1 = iselVecExpr(env, e->Iex.ITE.iftrue);
3838 HReg r0 = iselVecExpr(env, e->Iex.ITE.iffalse);
3839 HReg dst = newVRegV(env);
3889 HReg r = iselIntExpr_R(env, stmt->Ist.Store.data);
3896 HReg r = iselDblExpr(env, stmt->Ist.Store.data);
3902 HReg r = iselFltExpr(env, stmt->Ist.Store.data);
3907 HReg vHi, vLo, rA;
3918 HReg r = iselVecExpr(env, stmt->Ist.Store.data);
3941 HReg r = iselIntExpr_R(env, stmt->Ist.Put.data);
3950 HReg vHi, vLo;
3959 HReg vec = iselVecExpr(env, stmt->Ist.Put.data);
3965 HReg f32 = iselFltExpr(env, stmt->Ist.Put.data);
3972 HReg f64 = iselDblExpr(env, stmt->Ist.Put.data);
3992 HReg val = iselDblExpr(env, puti->data);
3997 HReg r = iselIntExpr_R(env, puti->data);
4002 HReg r = iselIntExpr_R(env, puti->data);
4007 HReg rHi, rLo;
4032 HReg dst = lookupIRTemp(env, tmp);
4037 HReg src = am->Xam.IR.reg;
4047 HReg dst = lookupIRTemp(env, tmp);
4052 HReg rHi, rLo, dstHi, dstLo;
4061 HReg dst = lookupIRTemp(env, tmp);
4066 HReg dst = lookupIRTemp(env, tmp);
4067 HReg src = iselDblExpr(env, stmt->Ist.WrTmp.data);
4072 HReg dst = lookupIRTemp(env, tmp);
4073 HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data);
4078 HReg dst = lookupIRTemp(env, tmp);
4079 HReg src = iselVecExpr(env, stmt->Ist.WrTmp.data);
4129 HReg dst = lookupIRTemp(env, d->tmp);
4138 HReg dstHi, dstLo;
4151 HReg dst = lookupIRTemp(env, d->tmp);
4184 HReg rDataLo = iselIntExpr_R(env, cas->dataLo);
4185 HReg rExpdLo = iselIntExpr_R(env, cas->expdLo);
4186 HReg rOldLo = lookupIRTemp(env, cas->oldLo);
4211 HReg rDataHi = iselIntExpr_R(env, cas->dataHi);
4212 HReg rDataLo = iselIntExpr_R(env, cas->dataLo);
4213 HReg rExpdHi = iselIntExpr_R(env, cas->expdHi);
4214 HReg rExpdLo = iselIntExpr_R(env, cas->expdLo);
4215 HReg rOldHi = lookupIRTemp(env, cas->oldHi);
4216 HReg rOldLo = lookupIRTemp(env, cas->oldLo);
4271 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
4297 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
4353 HReg r = iselIntExpr_R(env, next);
4364 HReg r = iselIntExpr_R(env, next);
4398 HReg r = iselIntExpr_R(env, next);
4433 HReg hreg, hregHI;
4460 /* Make up an IRTemp -> virtual HReg mapping. This doesn't
4463 env->vregmap = LibVEX_Alloc_inline(env->n_vregmap * sizeof(HReg));
4464 env->vregmapHI = LibVEX_Alloc_inline(env->n_vregmap * sizeof(HReg));
4475 hregHI = hreg = INVALID_HREG;
4480 case Ity_I32: hreg = mkHReg(True, HRcInt32, 0, j++); break;
4481 case Ity_I64: hreg = mkHReg(True, HRcInt32, 0, j++);
4484 case Ity_F64: hreg = mkHReg(True, HRcFlt64, 0, j++); break;
4485 case Ity_V128: hreg = mkHReg(True, HRcVec128, 0, j++); break;
4489 env->vregmap[i] = hreg;