Home | History | Annotate | Download | only in priv

Lines Matching defs:hreg

74    - A mapping from IRTemp to HReg.  This tells the insn selector
83 32-bit virtual HReg, which holds the high half
113 HReg* vregmap;
114 HReg* vregmapHI;
129 static HReg lookupIRTemp(ISelEnv * env, IRTemp tmp)
136 static void lookupIRTemp64(HReg * vrHI, HReg * vrLO, ISelEnv * env, IRTemp tmp)
146 lookupIRTempPair(HReg * vrHI, HReg * vrLO, ISelEnv * env, IRTemp tmp)
165 static HReg newVRegI(ISelEnv * env)
167 HReg reg = mkHReg(env->vreg_ctr, HRcGPR(env->mode64),
173 static HReg newVRegD(ISelEnv * env)
175 HReg reg = mkHReg(env->vreg_ctr, HRcFlt64, True /*virtual reg */ );
180 static HReg newVRegF(ISelEnv * env)
182 HReg reg = mkHReg(env->vreg_ctr, HRcFPR(env->mode64),
190 HReg sp = StackPointer(mode64);
198 HReg sp = StackPointer(mode64);
230 static HReg iselWordExpr_R_wrk(ISelEnv * env, IRExpr * e);
231 static HReg iselWordExpr_R(ISelEnv * env, IRExpr * e);
238 static void iselInt64Expr_wrk(HReg * rHi, HReg * rLo, ISelEnv * env,
240 static void iselInt64Expr(HReg * rHi, HReg * rLo, ISelEnv * env, IRExpr * e);
243 static void iselInt128Expr_wrk(HReg * rHi, HReg * rLo,
245 static void iselInt128Expr(HReg * rHi, HReg * rLo, ISelEnv * env, IRExpr * e);
250 static HReg iselDblExpr_wrk(ISelEnv * env, IRExpr * e);
251 static HReg iselDblExpr(ISelEnv * env, IRExpr * e);
253 static HReg iselFltExpr_wrk(ISelEnv * env, IRExpr * e);
254 static HReg iselFltExpr(ISelEnv * env, IRExpr * e);
267 HReg irrm = iselWordExpr_R(env, mode);
268 HReg tmp = newVRegI(env);
269 HReg fcsr_old = newVRegI(env);
290 HReg fcsr = newVRegI(env);
308 static MIPSInstr *mk_iMOVds_RR(HReg r_dst, HReg r_src)
337 static HReg mk_LoadRR32toFPR(ISelEnv * env, HReg r_srcHi, HReg r_srcLo)
339 HReg fr_dst = newVRegD(env);
368 HReg argregs[MIPS_N_REGPARMS];
369 HReg tmpregs[MIPS_N_REGPARMS];
374 HReg src = 0;
593 HReg r_base = iselWordExpr_R(env, e->Iex.Binop.arg1);
594 HReg r_idx = iselWordExpr_R(env, e->Iex.Binop.arg2);
623 static HReg iselWordExpr_R(ISelEnv * env, IRExpr * e)
625 HReg r = iselWordExpr_R_wrk(env, e);
634 static HReg iselWordExpr_R_wrk(ISelEnv * env, IRExpr * e)
648 HReg r_dst = newVRegI(env);
700 HReg r_dst = newVRegI(env);
701 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
744 HReg r_dst = newVRegI(env);
745 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
789 HReg dst = newVRegI(env);
790 HReg r1 = iselWordExpr_R(env, e->Iex.Binop.arg1);
791 HReg r2 = iselWordExpr_R(env, e->Iex.Binop.arg2);
853 HReg argL = iselWordExpr_R(env, e->Iex.Binop.arg1);
856 HReg dst = newVRegI(env);
857 HReg tmp = newVRegI(env);
866 HReg r_dst = newVRegI(env);
867 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
868 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
877 HReg r_dst = newVRegI(env);
878 HReg tHi = newVRegI(env);
879 HReg tLo = newVRegI(env);
880 HReg tLo_1 = newVRegI(env);
881 HReg tHi_1 = newVRegI(env);
882 HReg mask = newVRegI(env);
887 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
888 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
911 HReg r_srcL, r_srcR;
916 HReg tmp = newVRegI(env);
917 HReg r_ccMIPS = newVRegI(env);
918 HReg r_ccIR = newVRegI(env);
919 HReg r_ccIR_b0 = newVRegI(env);
920 HReg r_ccIR_b2 = newVRegI(env);
921 HReg r_ccIR_b6 = newVRegI(env);
999 HReg tLo = newVRegI(env);
1000 HReg tHi = newVRegI(env);
1001 HReg mask = newVRegI(env);
1002 HReg tLo_1 = newVRegI(env);
1003 HReg tHi_1 = newVRegI(env);
1004 HReg r_dst = newVRegI(env);
1007 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1008 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1029 HReg tHi = iselWordExpr_R(env, e->Iex.Binop.arg1);
1030 HReg tLo = iselWordExpr_R(env, e->Iex.Binop.arg2);
1031 HReg tLo_1 = newVRegI(env);
1032 HReg tHi_1 = newVRegI(env);
1033 HReg r_dst = newVRegI(env);
1034 HReg mask = newVRegI(env);
1049 HReg valD = iselDblExpr(env, e->Iex.Binop.arg2);
1050 HReg valS = newVRegF(env);
1051 HReg r_dst = newVRegI(env);
1085 HReg r_dst = newVRegI(env);
1086 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1127 HReg r_dst = newVRegI(env);
1128 HReg r_srcL = iselWordExpr_R(env, e->Iex.Unop.arg);
1138 HReg r_dst = newVRegI(env);
1139 HReg r_srcL = iselWordExpr_R(env, e->Iex.Unop.arg);
1148 HReg fr_src = iselFltExpr(env, e->Iex.Unop.arg);
1149 HReg r_dst = newVRegI(env);
1167 HReg fr_src = iselFltExpr(env, e->Iex.Unop.arg);
1168 HReg r_dst = newVRegI(env);
1189 HReg r_src, r_dst;
1200 HReg r_dst = newVRegI(env);
1201 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1229 HReg r_dst = newVRegI(env);
1230 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1239 HReg r_dst = newVRegI(env);
1240 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1254 HReg rHi, rLo;
1260 HReg rHi, rLo;
1267 HReg r_dst = newVRegI(env);
1273 HReg r_dst = newVRegI(env);
1274 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1282 HReg r_dst = newVRegI(env);
1283 HReg tmp = newVRegI(env);
1284 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1297 HReg r_dst = newVRegI(env);
1298 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1310 HReg r_dst = newVRegI(env);
1311 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1328 HReg r_dst = newVRegI(env);
1329 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1338 HReg r_dst = newVRegI(env);
1339 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1345 HReg hi, lo;
1346 HReg r_dst = newVRegI(env);
1347 HReg r_src;
1361 HReg tmp1;
1362 HReg tmp2 = newVRegI(env);
1377 HReg rHi, rLo;
1384 HReg rHi, rLo;
1399 HReg r_dst = newVRegI(env);
1421 HReg r0 = iselWordExpr_R(env, e->Iex.Mux0X.expr0);
1422 HReg rX = iselWordExpr_R(env, e->Iex.Mux0X.exprX);
1423 HReg r_cond = iselWordExpr_R(env, e->Iex.Mux0X.cond);
1424 HReg r_dst = newVRegI(env);
1425 HReg r_tmp = newVRegI(env);
1426 HReg r_tmp1 = newVRegI(env);
1427 HReg r_cond_neg = newVRegI(env);
1446 HReg r_dst = newVRegI(env);
1472 HReg r_dst = newVRegI(env);
1650 HReg dst = newVRegI(env);
1651 HReg r1 = iselWordExpr_R(env, e->Iex.Binop.arg1);
1652 HReg r2 = iselWordExpr_R(env, e->Iex.Binop.arg2);
1712 HReg r_dst = newVRegI(env);
1713 HReg r_srcL = iselWordExpr_R(env, e->Iex.Unop.arg);
1727 HReg r_dst = iselWordExpr_R_wrk(env, e);
1752 static void iselInt128Expr(HReg * rHi, HReg * rLo, ISelEnv * env, IRExpr * e)
1768 static void iselInt128Expr_wrk(HReg * rHi, HReg * rLo, ISelEnv * env,
1787 HReg tLo = newVRegI(env);
1788 HReg tHi = newVRegI(env);
1790 HReg r_dst = newVRegI(env);
1791 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1792 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1809 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1810 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1811 HReg tLo = newVRegI(env);
1812 HReg tHi = newVRegI(env);
1825 HReg rHi1, rLo1;
1828 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1829 HReg tLo = newVRegI(env);
1830 HReg tHi = newVRegI(env);
1858 static void iselInt64Expr(HReg * rHi, HReg * rLo, ISelEnv * env, IRExpr * e)
1869 static void iselInt64Expr_wrk(HReg * rHi, HReg * rLo, ISelEnv * env, IRExpr * e)
1881 HReg tLo = newVRegI(env);
1882 HReg tHi = newVRegI(env);
1883 HReg r_addr = iselWordExpr_R(env, e->Iex.Load.addr);
1896 HReg tLo = newVRegI(env);
1897 HReg tHi = newVRegI(env);
1917 HReg tLo = newVRegI(env);
1918 HReg tHi = newVRegI(env);
1931 HReg expr0Lo, expr0Hi;
1932 HReg exprXLo, exprXHi;
1933 HReg tmpHi = newVRegI(env);
1934 HReg tmpLo = newVRegI(env);
1935 HReg tmp1Hi = newVRegI(env);
1936 HReg tmp1Lo = newVRegI(env);
1937 HReg r_cond = iselWordExpr_R(env, e->Iex.Mux0X.cond);
1938 HReg r_cond_neg = newVRegI(env);
1939 HReg desLo = newVRegI(env);
1940 HReg desHi = newVRegI(env);
1973 HReg xLo, xHi, yLo, yHi;
1974 HReg tHi = newVRegI(env);
1975 HReg tLo = newVRegI(env);
1986 HReg tLo = newVRegI(env);
1987 HReg tHi = newVRegI(env);
1988 HReg r_dst = newVRegI(env);
1990 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1991 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
2005 HReg r_sHi, r_sLo;
2006 HReg tLo = newVRegI(env);
2007 HReg tHi = newVRegI(env);
2009 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
2031 HReg xLo, xHi, yLo, yHi;
2032 HReg tLo = newVRegI(env);
2033 HReg tHi = newVRegI(env);
2055 HReg tLo = newVRegI(env);
2056 HReg tHi = newVRegI(env);
2057 HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
2058 HReg tmp = newVRegI(env);
2075 HReg tLo = newVRegI(env);
2076 HReg tHi = newVRegI(env);
2077 HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
2089 HReg tLo = newVRegI(env);
2090 HReg tHi = newVRegI(env);
2091 HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
2101 HReg srcLo, srcHi;
2102 HReg tmp1 = newVRegI(env);
2103 HReg tmp2 = newVRegI(env);
2123 HReg tLo = newVRegI(env);
2124 HReg tHi = newVRegI(env);
2126 HReg fr_src = iselDblExpr(env, e->Iex.Unop.arg);
2166 static HReg iselFltExpr(ISelEnv * env, IRExpr * e)
2168 HReg r = iselFltExpr_wrk(env, e);
2174 static HReg iselFltExpr_wrk(ISelEnv * env, IRExpr * e)
2185 HReg r_dst = newVRegF(env);
2194 HReg r_dst = newVRegF(env);
2205 HReg fr_src = iselWordExpr_R(env, e->Iex.Unop.arg);
2206 HReg r_dst = newVRegF(env);
2224 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2225 HReg dst = newVRegF(env);
2246 HReg fr_src = iselWordExpr_R(env, e->Iex.Unop.arg);
2247 HReg r_dst = newVRegF(env);
2264 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2265 HReg dst = newVRegF(env);
2272 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2273 HReg dst = newVRegF(env);
2293 /*INVALID*/ HReg argL = iselFltExpr(env, e->Iex.Triop.details->arg2);
2294 HReg argR = iselFltExpr(env, e->Iex.Triop.details->arg3);
2295 HReg dst = newVRegF(env);
2323 HReg valD = iselDblExpr(env, e->Iex.Binop.arg2);
2324 HReg valS = newVRegF(env);
2333 HReg valS = newVRegF(env);
2334 HReg valF = iselFltExpr(env, e->Iex.Binop.arg2);
2344 HReg r_dst = newVRegF(env);
2347 HReg fr_src = iselWordExpr_R(env, e->Iex.Binop.arg2);
2348 HReg tmp = newVRegF(env);
2372 HReg src = iselFltExpr(env, e->Iex.Binop.arg2);
2373 HReg dst = newVRegF(env);
2415 HReg fsrc = iselDblExpr(env, e->Iex.Unop.arg);
2416 HReg fdst = newVRegF(env);
2433 static HReg iselDblExpr(ISelEnv * env, IRExpr * e)
2435 HReg r = iselDblExpr_wrk(env, e);
2442 static HReg iselDblExpr_wrk(ISelEnv * env, IRExpr * e)
2454 HReg r_dst = newVRegD(env);
2465 HReg r_dst = newVRegD(env);
2482 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2483 HReg dst = newVRegD(env);
2485 HReg irrm = newVRegI(env);
2492 HReg tmp = newVRegI(env);
2493 HReg fcsr_old = newVRegI(env);
2518 HReg Hi;
2519 HReg Lo;
2520 HReg dst = newVRegD(env);
2528 HReg dst = newVRegD(env);
2529 HReg tmp1 = newVRegF(env);
2530 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
2543 HReg irrm = newVRegI(env);
2550 HReg tmp = newVRegI(env);
2551 HReg fcsr_old = newVRegI(env);
2580 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
2581 HReg dst = newVRegD(env);
2590 HReg valD = iselDblExpr(env, e->Iex.Binop.arg2);
2592 HReg valD1 = newVRegD(env);
2605 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2606 HReg dst = newVRegD(env);
2625 /*INVALID*/ HReg argL = iselDblExpr(env, e->Iex.Triop.details->arg2);
2626 HReg argR = iselDblExpr(env, e->Iex.Triop.details->arg3);
2627 HReg dst = newVRegD(env);
2656 HReg r0 = iselDblExpr(env, e->Iex.Mux0X.expr0);
2657 HReg rX = iselDblExpr(env, e->Iex.Mux0X.exprX);
2658 HReg r_cond = iselWordExpr_R(env, e->Iex.Mux0X.cond);
2659 HReg r_cond_neg = newVRegI(env);
2660 HReg r_dst = newVRegD(env);
2661 HReg r_tmp_lo = newVRegI(env);
2662 HReg r_tmp_hi = newVRegI(env);
2663 HReg r_tmp1_lo = newVRegI(env);
2664 HReg r_tmp1_hi = newVRegI(env);
2665 HReg r_r0_lo = newVRegI(env);
2666 HReg r_r0_hi = newVRegI(env);
2667 HReg r_rX_lo = newVRegI(env);
2668 HReg r_rX_hi = newVRegI(env);
2669 HReg r_dst_lo = newVRegI(env);
2670 HReg r_dst_hi = newVRegI(env);
2762 HReg r_src = iselWordExpr_R(env, stmt->Ist.Store.data);
2768 HReg vHi, vLo;
2769 HReg r_addr = iselWordExpr_R(env, stmt->Ist.Store.addr);
2780 HReg fr_src = iselFltExpr(env, stmt->Ist.Store.data);
2795 HReg r_src = iselWordExpr_R(env, stmt->Ist.Put.data);
2804 HReg vHi, vLo;
2819 HReg fr_src = iselFltExpr(env, stmt->Ist.Put.data);
2828 HReg fr_src;
2845 HReg r_dst = lookupIRTemp(env, tmp);
2846 HReg r_src = iselWordExpr_R(env, stmt->Ist.WrTmp.data);
2852 HReg rHi, rLo, dstHi, dstLo;
2861 HReg fr_dst = lookupIRTemp(env, tmp);
2862 HReg fr_src = iselFltExpr(env, stmt->Ist.WrTmp.data);
2868 HReg src = iselDblExpr(env, stmt->Ist.WrTmp.data);
2869 HReg dst = lookupIRTemp(env, tmp);
2904 HReg r_dst = lookupIRTemp(env, d->tmp);
2929 HReg r_dst = lookupIRTemp(env, res);
2942 HReg r_src = iselWordExpr_R(env, stmt->Ist.LLSC.storedata);
2943 HReg r_dst = lookupIRTemp(env, res);
3010 HReg r = iselWordExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
3029 HReg r = iselWordExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
3091 HReg r = iselWordExpr_R(env, next);
3103 HReg r = iselWordExpr_R(env, next);
3129 HReg r = iselWordExpr_R(env, next);
3162 HReg hreg, hregHI;
3185 /* Make up an IRTemp -> virtual HReg mapping. This doesn't
3188 env->vregmap = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
3189 env->vregmapHI = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
3201 hregHI = hreg = INVALID_HREG;
3207 hreg = mkHReg(j++, HRcInt32, True);
3211 hreg = mkHReg(j++, HRcInt32, True);
3217 hreg = mkHReg(j++, HRcInt64, True);
3221 hreg = mkHReg(j++, HRcFlt32, True);
3225 hreg = mkHReg(j++, HRcFlt64, True);
3231 env->vregmap[i] = hreg;