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(env->vreg_ctr, HRcInt32, True/*virtual reg*/);
225 static HReg newVRegF ( ISelEnv* env )
227 HReg reg = mkHReg(env->vreg_ctr, HRcFlt64, True/*virtual reg*/);
232 static HReg newVRegV ( ISelEnv* env )
234 HReg reg = mkHReg(env->vreg_ctr, HRcVec128, True/*virtual reg*/);
259 static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e );
260 static HReg iselIntExpr_R ( ISelEnv* env, 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, IRExpr* e );
274 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e );
276 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e );
277 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e );
279 static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e );
280 static HReg iselVecExpr ( ISelEnv* env, IRExpr* e );
289 static X86Instr* mk_iMOVsd_RR ( HReg src, HReg dst )
299 static X86Instr* mk_vMOVsd_RR ( HReg src, HReg dst )
353 HReg rHi, rLo;
410 HReg argregs[3];
411 HReg tmpregs[3];
598 HReg tmp, roff;
662 HReg rrm = iselIntExpr_R(env, mode);
663 HReg rrm2 = newVRegI(env);
688 static HReg do_sse_Not128 ( ISelEnv* env, HReg src )
690 HReg dst = newVRegV(env);
710 static void roundToF64 ( ISelEnv* env, HReg reg )
738 static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e )
740 HReg r = iselIntExpr_R_wrk(env, e);
751 static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
767 HReg dst = newVRegI(env);
797 HReg junk = newVRegF(env);
798 HReg dst = newVRegI(env);
799 HReg srcL = iselDblExpr(env, triop->arg2);
800 HReg srcR = iselDblExpr(env, triop->arg3);
826 HReg dst = newVRegI(env);
827 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
853 HReg dst = newVRegI(env);
854 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
890 HReg dst = newVRegI(env);
893 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
930 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
940 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
941 HReg dst = newVRegI(env);
942 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
950 HReg hi8 = newVRegI(env);
951 HReg lo8 = newVRegI(env);
952 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
953 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
963 HReg hi16 = newVRegI(env);
964 HReg lo16 = newVRegI(env);
965 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
966 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
977 HReg a16 = newVRegI(env);
978 HReg b16 = newVRegI(env);
979 HReg a16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
980 HReg b16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
999 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1000 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1001 HReg dst = newVRegI(env);
1012 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1013 HReg dst = newVRegI(env);
1065 HReg dst = newVRegI(env);
1066 HReg src = iselIntExpr_R(env, expr32);
1081 HReg dst = newVRegI(env);
1095 HReg dst = newVRegI(env);
1109 HReg dst = newVRegI(env);
1119 HReg dst;
1133 HReg dst;
1148 HReg dst = newVRegI(env);
1149 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1159 HReg dst = newVRegI(env);
1160 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1170 HReg dst = newVRegI(env);
1171 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1177 HReg rHi, rLo;
1182 HReg rHi, rLo;
1188 HReg dst = newVRegI(env);
1189 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1197 HReg dst = newVRegI(env);
1206 HReg dst = newVRegI(env);
1215 HReg dst = newVRegI(env);
1216 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1224 HReg tmp = newVRegI(env);
1225 HReg dst = newVRegI(env);
1226 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1236 HReg dst = newVRegI(env);
1237 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1248 HReg dst = newVRegI(env);
1249 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1257 HReg dst = newVRegI(env);
1258 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1272 HReg rf = iselFltExpr(env, e->Iex.Unop.arg);
1273 HReg dst = newVRegI(env);
1305 HReg dst = newVRegI(env);
1314 HReg dst = newVRegI(env);
1330 HReg dst = newVRegI(env);
1344 HReg dst = newVRegI(env);
1363 HReg r = newVRegI(env);
1373 HReg rX = iselIntExpr_R(env, e->Iex.Mux0X.exprX);
1375 HReg dst = newVRegI(env);
1456 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1->Iex.Binop.arg1);
1457 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg1
1472 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1473 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1483 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1490 HReg r1 = iselIntExpr_R(env, e);
1553 HReg r = iselIntExpr_R ( env, e );
1600 HReg r = iselIntExpr_R ( env, e );
1644 HReg r = iselIntExpr_R ( env, e );
1672 HReg r32 = lookupIRTemp(env, e->Iex.RdTmp.tmp);
1680 HReg r;
1733 HReg r0 = iselIntExpr_R(env, mi.bindee[0]);
1735 HReg tmp = newVRegI(env);
1748 HReg r0 = iselIntExpr_R(env, mi.bindee[0]);
1750 HReg tmp = newVRegI(env);
1770 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
1784 HReg hi1, lo1, hi2, lo2;
1785 HReg tmp = newVRegI(env);
1799 HReg hi, lo;
1800 HReg tmp = newVRegI(env);
1816 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1824 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1826 HReg r = newVRegI(env);
1844 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1846 HReg r = newVRegI(env);
1886 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1904 HReg hi1, hi2, lo1, lo2;
1905 HReg tHi = newVRegI(env);
1906 HReg tLo = newVRegI(env);
1935 static void iselInt64Expr ( HReg* rHi, HReg* rLo, ISelEnv* env, IRExpr* e )
1948 static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo, ISelEnv* env, IRExpr* e )
1960 HReg tLo = newVRegI(env);
1961 HReg tHi = newVRegI(env);
1985 HReg tLo, tHi;
2003 HReg tLo = newVRegI(env);
2004 HReg tHi = newVRegI(env);
2018 HReg tLo = newVRegI(env);
2019 HReg tHi = newVRegI(env);
2030 HReg e0Lo, e0Hi;
2031 HReg tLo = newVRegI(env);
2032 HReg tHi = newVRegI(env);
2050 HReg e0Lo, e0Hi;
2051 HReg tLo = newVRegI(env);
2052 HReg tHi = newVRegI(env);
2071 HReg e0Lo, e0Hi, eXLo, eXHi;
2072 HReg tLo = newVRegI(env);
2073 HReg tHi = newVRegI(env);
2098 HReg tLo = newVRegI(env);
2099 HReg tHi = newVRegI(env);
2102 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2118 HReg sHi, sLo;
2119 HReg tLo = newVRegI(env);
2120 HReg tHi = newVRegI(env);
2138 HReg xLo, xHi, yLo, yHi;
2139 HReg tLo = newVRegI(env);
2140 HReg tHi = newVRegI(env);
2162 HReg tLo = newVRegI(env);
2163 HReg tHi = newVRegI(env);
2164 HReg xLo, xHi;
2177 HReg xLo, xHi, yLo, yHi;
2178 HReg tLo = newVRegI(env);
2179 HReg tHi = newVRegI(env);
2223 HReg rAmt, sHi, sLo, tHi, tLo, tTemp;
2265 HReg rAmt, sHi, sLo, tHi, tLo, tTemp;
2292 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2293 HReg tLo = newVRegI(env);
2294 HReg tHi = newVRegI(env);
2441 HReg xLo, xHi, yLo, yHi;
2442 HReg tLo = newVRegI(env);
2443 HReg tHi = newVRegI(env);
2481 HReg xLo, xHi;
2482 HReg tLo = newVRegI(env);
2483 HReg tHi = newVRegI(env);
2510 HReg tLo = newVRegI(env);
2511 HReg tHi = newVRegI(env);
2512 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2523 HReg tLo = newVRegI(env);
2524 HReg tHi = newVRegI(env);
2525 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2535 HReg tLo = newVRegI(env);
2536 HReg tHi = newVRegI(env);
2537 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2551 HReg tLo = newVRegI(env);
2552 HReg tHi = newVRegI(env);
2553 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
2571 HReg tLo = newVRegI(env);
2572 HReg tHi = newVRegI(env);
2585 HReg tLo = newVRegI(env);
2586 HReg tHi = newVRegI(env);
2587 HReg sHi, sLo;
2600 HReg yLo, yHi;
2601 HReg tLo = newVRegI(env);
2602 HReg tHi = newVRegI(env);
2631 HReg xHi,xLo,yHi,yLo;
2632 HReg xBoth = newVRegI(env);
2633 HReg merged = newVRegI(env);
2634 HReg tmp2 = newVRegI(env);
2659 HReg srcLo, srcHi;
2660 HReg tmp1 = newVRegI(env);
2661 HReg tmp2 = newVRegI(env);
2684 HReg rf = iselDblExpr(env, e->Iex.Unop.arg);
2685 HReg tLo = newVRegI(env);
2686 HReg tHi = newVRegI(env);
2721 HReg xLo, xHi;
2722 HReg tLo = newVRegI(env);
2723 HReg tHi = newVRegI(env);
2744 HReg tLo = newVRegI(env);
2745 HReg tHi = newVRegI(env);
2769 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e )
2771 HReg r = iselFltExpr_wrk( env, e );
2781 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
2792 HReg res = newVRegF(env);
2804 HReg dst = newVRegF(env);
2805 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2815 HReg res = newVRegF(env);
2824 HReg dst = newVRegF(env);
2836 HReg rf = iselFltExpr(env, e->Iex.Binop.arg2);
2837 HReg dst = newVRegF(env);
2886 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e )
2888 HReg r = iselDblExpr_wrk( env, e );
2898 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
2910 HReg freg = newVRegF(env);
2935 HReg res = newVRegF(env);
2945 HReg res = newVRegF(env);
2955 HReg res = newVRegF(env);
2977 HReg res = newVRegF(env);
2978 HReg srcL = iselDblExpr(env, triop->arg2);
2979 HReg srcR = iselDblExpr(env, triop->arg3);
2991 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2992 HReg dst = newVRegF(env);
3010 HReg dst = newVRegF(env);
3011 HReg rHi,rLo;
3041 HReg res = newVRegF(env);
3042 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
3061 HReg res = newVRegF(env);
3062 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
3073 HReg dst = newVRegF(env);
3074 HReg ri = iselIntExpr_R(env, e->Iex.Unop.arg);
3086 HReg dst = newVRegF(env);
3087 HReg rHi, rLo;
3101 HReg res = iselFltExpr(env, e->Iex.Unop.arg);
3114 HReg rX = iselDblExpr(env, e->Iex.Mux0X.exprX);
3115 HReg r0 = iselDblExpr(env, e->Iex.Mux0X.expr0);
3116 HReg dst = newVRegF(env);
3133 static HReg iselVecExpr ( ISelEnv* env, IRExpr* e )
3135 HReg r = iselVecExpr_wrk( env, e );
3146 static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
3177 HReg dst = newVRegV(env);
3188 HReg dst = newVRegV(env);
3195 HReg dst = newVRegV(env);
3211 HReg dst = newVRegV(env);
3220 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3240 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3241 HReg tmp = newVRegV(env);
3242 HReg dst = newVRegV(env);
3263 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3264 HReg dst = newVRegV(env);
3265 HReg r32 = newVRegI(env);
3283 HReg arg;
3284 HReg vec0 = newVRegV(env);
3285 HReg vec1 = newVRegV(env);
3286 HReg dst = newVRegV(env);
3311 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3312 HReg dst = newVRegV(env);
3322 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3323 HReg dst = newVRegV(env);
3340 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3341 HReg dst = newVRegV(env);
3358 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3359 HReg dst = newVRegV(env);
3367 HReg dst = newVRegV(env);
3377 HReg rHi, rLo;
3378 HReg dst = newVRegV(env);
3397 HReg dst = newVRegV(env);
3398 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3399 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3410 HReg dst = newVRegV(env);
3411 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3412 HReg srcIhi, srcIlo;
3426 HReg r3, r2, r1, r0;
3431 HReg dst = newVRegV(env);
3460 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3461 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3462 HReg dst = newVRegV(env);
3480 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3481 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3482 HReg dst = newVRegV(env);
3500 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3501 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3502 HReg dst = newVRegV(env);
3519 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3520 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3521 HReg dst = newVRegV(env);
3588 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3589 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3590 HReg dst = newVRegV(env);
3612 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3615 HReg ereg = newVRegV(env);
3616 HReg dst = newVRegV(env);
3639 HReg dst = newVRegV(env);
3640 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3641 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3642 HReg argp = newVRegI(env);
3689 HReg rX = iselVecExpr(env, e->Iex.Mux0X.exprX);
3690 HReg r0 = iselVecExpr(env, e->Iex.Mux0X.expr0);
3691 HReg dst = newVRegV(env);
3741 HReg r = iselIntExpr_R(env, stmt->Ist.Store.data);
3748 HReg r = iselDblExpr(env, stmt->Ist.Store.data);
3754 HReg r = iselFltExpr(env, stmt->Ist.Store.data);
3759 HReg vHi, vLo, rA;
3770 HReg r = iselVecExpr(env, stmt->Ist.Store.data);
3793 HReg r = iselIntExpr_R(env, stmt->Ist.Put.data);
3802 HReg vHi, vLo;
3811 HReg vec = iselVecExpr(env, stmt->Ist.Put.data);
3817 HReg f32 = iselFltExpr(env, stmt->Ist.Put.data);
3824 HReg f64 = iselDblExpr(env, stmt->Ist.Put.data);
3844 HReg val = iselDblExpr(env, puti->data);
3849 HReg r = iselIntExpr_R(env, puti->data);
3854 HReg r = iselIntExpr_R(env, puti->data);
3859 HReg rHi, rLo;
3884 HReg dst = lookupIRTemp(env, tmp);
3889 HReg src = am->Xam.IR.reg;
3899 HReg dst = lookupIRTemp(env, tmp);
3904 HReg rHi, rLo, dstHi, dstLo;
3913 HReg dst = lookupIRTemp(env, tmp);
3918 HReg dst = lookupIRTemp(env, tmp);
3919 HReg src = iselDblExpr(env, stmt->Ist.WrTmp.data);
3924 HReg dst = lookupIRTemp(env, tmp);
3925 HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data);
3930 HReg dst = lookupIRTemp(env, tmp);
3931 HReg src = iselVecExpr(env, stmt->Ist.WrTmp.data);
3959 HReg dstHi, dstLo;
3970 HReg dst = lookupIRTemp(env, d->tmp);
3997 HReg rDataLo = iselIntExpr_R(env, cas->dataLo);
3998 HReg rExpdLo = iselIntExpr_R(env, cas->expdLo);
3999 HReg rOldLo = lookupIRTemp(env, cas->oldLo);
4024 HReg rDataHi = iselIntExpr_R(env, cas->dataHi);
4025 HReg rDataLo = iselIntExpr_R(env, cas->dataLo);
4026 HReg rExpdHi = iselIntExpr_R(env, cas->expdHi);
4027 HReg rExpdLo = iselIntExpr_R(env, cas->expdLo);
4028 HReg rOldHi = lookupIRTemp(env, cas->oldHi);
4029 HReg rOldLo = lookupIRTemp(env, cas->oldLo);
4084 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
4107 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
4163 HReg r = iselIntExpr_R(env, next);
4174 HReg r = iselIntExpr_R(env, next);
4205 HReg r = iselIntExpr_R(env, next);
4240 HReg hreg, hregHI;
4265 /* Make up an IRTemp -> virtual HReg mapping. This doesn't
4268 env->vregmap = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
4269 env->vregmapHI = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
4280 hregHI = hreg = INVALID_HREG;
4285 case Ity_I32: hreg = mkHReg(j++, HRcInt32, True); break;
4286 case Ity_I64: hreg = mkHReg(j++, HRcInt32, True);
4289 case Ity_F64: hreg = mkHReg(j++, HRcFlt64, True); break;
4290 case Ity_V128: hreg = mkHReg(j++, HRcVec128, True); break;
4294 env->vregmap[i] = hreg;