Home | History | Annotate | Download | only in priv

Lines Matching refs:HReg

103    - A mapping from IRTemp to HReg.  This tells the insn selector
112 64-bit virtual HReg, which holds the high half
143 HReg* vregmap;
144 HReg* vregmapHI;
159 static HReg lookupIRTemp ( ISelEnv* env, IRTemp tmp )
166 static void lookupIRTempPair ( HReg* vrHI, HReg* vrLO,
185 static HReg newVRegI ( ISelEnv* env )
187 HReg reg = mkHReg(env->vreg_ctr, HRcInt64, True/*virtual reg*/);
192 static HReg newVRegV ( ISelEnv* env )
194 HReg reg = mkHReg(env->vreg_ctr, HRcVec128, True/*virtual reg*/);
219 static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e );
220 static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e );
225 static void iselInt128Expr_wrk ( /*OUT*/HReg* rHi, HReg* rLo,
227 static void iselInt128Expr ( /*OUT*/HReg* rHi, HReg* rLo,
233 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e );
234 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e );
236 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e );
237 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e );
239 static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e );
240 static HReg iselVecExpr ( ISelEnv* env, IRExpr* e );
242 static void iselDVecExpr_wrk ( /*OUT*/HReg* rHi, HReg* rLo,
244 static void iselDVecExpr ( /*OUT*/HReg* rHi, HReg* rLo,
302 static AMD64Instr* mk_iMOVsd_RR ( HReg src, HReg dst )
311 static AMD64Instr* mk_vMOVsd_RR ( HReg src, HReg dst )
345 HReg tmp = newVRegI(env);
357 HReg dst,
376 HReg src = lookupIRTemp(env, e->Iex.RdTmp.tmp);
393 HReg src = lookupIRTemp(env, e->Iex.Unop.arg->Iex.RdTmp.tmp);
413 HReg argregs[6];
414 HReg tmpregs[6];
604 HReg tmp, roff;
691 HReg reg = newVRegI(env);
713 HReg rrm = iselIntExpr_R(env, mode);
714 HReg rrm2 = newVRegI(env);
737 static HReg generate_zeroes_V128 ( ISelEnv* env )
739 HReg dst = newVRegV(env);
746 static HReg generate_ones_V128 ( ISelEnv* env )
748 HReg dst = newVRegV(env);
757 static HReg do_sse_NotV128 ( ISelEnv* env, HReg src )
759 HReg dst = generate_ones_V128(env);
798 static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e )
800 HReg r = iselIntExpr_R_wrk(env, e);
811 static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
837 HReg dst = newVRegI(env);
873 HReg dst = newVRegI(env);
874 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
900 HReg dst = newVRegI(env);
901 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
920 HReg dst = newVRegI(env);
923 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
972 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1122 HReg dst = newVRegI(env);
1123 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1124 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1137 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1138 HReg dst = newVRegI(env);
1139 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1151 HReg rax = hregAMD64_RAX();
1152 HReg rdx = hregAMD64_RDX();
1153 HReg dst = newVRegI(env);
1158 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1172 HReg hi32 = newVRegI(env);
1173 HReg lo32 = newVRegI(env);
1174 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1175 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1186 HReg hi16 = newVRegI(env);
1187 HReg lo16 = newVRegI(env);
1188 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1189 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1201 HReg hi8 = newVRegI(env);
1202 HReg lo8 = newVRegI(env);
1203 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1204 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1221 HReg a32 = newVRegI(env);
1222 HReg b32 = newVRegI(env);
1223 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1224 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1248 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1249 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1250 HReg dst = newVRegI(env);
1261 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1262 HReg dst = newVRegI(env);
1281 HReg dst = newVRegI(env);
1282 HReg src = iselIntExpr_R(env, expr64);
1296 HReg dst = newVRegI(env);
1309 HReg dst = newVRegI(env);
1335 HReg dst = newVRegI(env);
1336 HReg reg = iselIntExpr_R(env, argL);
1349 HReg dst = newVRegI(env);
1350 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1356 HReg rHi, rLo;
1361 HReg rHi, rLo;
1370 HReg dst = newVRegI(env);
1371 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1385 HReg dst = newVRegI(env);
1386 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1399 HReg dst = newVRegI(env);
1400 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1408 HReg dst = newVRegI(env);
1409 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1424 HReg dst = newVRegI(env);
1434 HReg dst = newVRegI(env);
1443 HReg dst = newVRegI(env);
1444 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1452 HReg tmp = newVRegI(env);
1453 HReg dst = newVRegI(env);
1454 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1464 HReg dst = newVRegI(env);
1465 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1475 HReg src = newVRegI(env);
1476 HReg dst = newVRegI(env);
1477 HReg pre = iselIntExpr_R(env, e->Iex.Unop.arg);
1492 HReg dst = newVRegI(env);
1493 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1501 HReg dst = newVRegI(env);
1502 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1512 HReg dst = newVRegI(env);
1514 HReg rsp = hregAMD64_RSP();
1515 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1527 HReg vHi, vLo, vec;
1540 HReg dst = newVRegI(env);
1541 HReg rsp = hregAMD64_RSP();
1556 HReg dst = newVRegI(env);
1557 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
1571 HReg dst = newVRegI(env);
1572 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
1610 HReg dst = newVRegI(env);
1611 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
1624 HReg dst = newVRegI(env);
1634 HReg dst = newVRegI(env);
1650 HReg dst = newVRegI(env);
1664 HReg dst = newVRegI(env);
1689 HReg r = newVRegI(env);
1694 HReg r = newVRegI(env);
1703 HReg r8;
1704 HReg rX = iselIntExpr_R(env, e->Iex.Mux0X.exprX);
1706 HReg dst = newVRegI(env);
1724 HReg arg1 = iselDblExpr(env, triop->arg2);
1725 HReg arg2 = iselDblExpr(env, triop->arg3);
1726 HReg dst = newVRegI(env);
1819 HReg r1 = iselIntExpr_R(env, expr1);
1820 HReg r2 = iselIntExpr_R(env, expr2);
1835 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1836 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1847 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1857 HReg r1 = iselIntExpr_R(env, e);
1928 HReg r = iselIntExpr_R ( env, e );
1984 HReg r = iselIntExpr_R ( env, e );
2029 HReg r = iselIntExpr_R ( env, e );
2057 HReg r64 = lookupIRTemp(env, e->Iex.RdTmp.tmp);
2058 HReg dst = newVRegI(env);
2066 HReg r;
2086 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2095 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2105 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2115 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2125 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2139 HReg r0 = iselIntExpr_R(env, mi.bindee[0]);
2141 HReg tmp = newVRegI(env);
2151 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2165 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2167 HReg r = newVRegI(env);
2184 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2186 HReg r = newVRegI(env);
2205 HReg tmp = newVRegI(env);
2227 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2251 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2279 static void iselInt128Expr ( HReg* rHi, HReg* rLo,
2293 static void iselInt128Expr_wrk ( HReg* rHi, HReg* rLo,
2314 HReg
2315 HReg tHi = newVRegI(env);
2318 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2334 HReg sHi, sLo;
2335 HReg tLo = newVRegI(env);
2336 HReg tHi = newVRegI(env);
2373 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e )
2375 HReg r = iselFltExpr_wrk( env, e );
2385 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
2396 HReg res = newVRegV(env);
2408 HReg dst = newVRegV(env);
2409 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2419 HReg res = newVRegV(env);
2428 HReg dst = newVRegV(env);
2429 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2438 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2439 HReg dst = newVRegV(env);
2493 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e )
2495 HReg r = iselDblExpr_wrk( env, e );
2505 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
2517 HReg res = newVRegV(env);
2518 HReg tmp = newVRegI(env);
2544 HReg res = newVRegV(env);
2554 HReg res = newVRegV(env);
2564 HReg res = newVRegV(env);
2580 HReg dst = newVRegV(env);
2581 HReg argL = iselDblExpr(env, triop->arg2);
2582 HReg argR = iselDblExpr(env, triop->arg3);
2593 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2594 HReg dst = newVRegV(env);
2625 HReg arg1 = iselDblExpr(env, triop->arg2);
2626 HReg arg2 = iselDblExpr(env, triop->arg3);
2627 HReg dst = newVRegV(env);
2676 HReg dst = newVRegV(env);
2677 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
2685 HReg dst = newVRegV(env);
2686 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2698 HReg r1 = newVRegI(env);
2699 HReg dst = newVRegV(env);
2700 HReg tmp = newVRegV(env);
2701 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
2730 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2731 HReg dst = newVRegV(env);
2752 //.. HReg dst = newVRegF(env);
2753 //.. HReg ri = iselIntExpr_R(env, e->Iex.Unop.arg);
2766 HReg dst = newVRegV(env);
2775 HReg f32;
2776 HReg f64 = newVRegV(env);
2790 HReg r8, rX, r0, dst;
2812 static HReg iselVecExpr ( ISelEnv* env, IRExpr* e )
2814 HReg r = iselVecExpr_wrk( env, e );
2825 static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
2839 HReg dst = newVRegV(env);
2851 HReg dst = newVRegV(env);
2858 HReg dst = newVRegV(env);
2888 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2908 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2909 HReg tmp = generate_zeroes_V128(env);
2910 HReg dst = newVRegV(env);
2923 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2924 HReg tmp = newVRegV(env);
2925 HReg zero = generate_zeroes_V128(env);
2926 HReg dst;
2938 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2939 HReg dst = newVRegV(env);
2947 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2948 HReg dst = newVRegV(env);
2964 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2965 HReg dst = newVRegV(env);
2980 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
2981 HReg dst = newVRegV(env);
2988 HReg dst = newVRegV(env);
2997 HReg dst = newVRegV(env);
3008 HReg vHi, vLo;
3023 HReg dst = newVRegV(env);
3024 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3025 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3035 HReg dst = newVRegV(env);
3036 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3037 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3046 HReg rsp = hregAMD64_RSP();
3053 HReg dst = newVRegV(env);
3071 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3072 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3073 HReg dst = newVRegV(env);
3091 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3092 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3093 HReg dst = newVRegV(env);
3110 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3111 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3112 HReg dst = newVRegV(env);
3129 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3130 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3131 HReg dst = newVRegV(env);
3197 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3198 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3199 HReg dst = newVRegV(env);
3219 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3222 HReg ereg = newVRegV(env);
3223 HReg dst = newVRegV(env);
3270 HReg dst = newVRegV(env);
3271 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3272 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3273 HReg argp = newVRegI(env);
3321 HReg dst = newVRegV(env);
3322 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3323 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3324 HReg argp = newVRegI(env);
3367 HReg r8 = iselIntExpr_R(env, e->Iex.Mux0X.cond);
3368 HReg rX = iselVecExpr(env, e->Iex.Mux0X.exprX);
3369 HReg r0 = iselVecExpr(env, e->Iex.Mux0X.expr0);
3370 HReg dst = newVRegV(env);
3389 static void iselDVecExpr ( /*OUT*/HReg* rHi, /*OUT*/HReg* rLo,
3404 static void iselDVecExpr_wrk ( /*OUT*/HReg* rHi, /*OUT*/HReg* rLo,
3420 HReg vHi = newVRegV(env);
3421 HReg vLo = newVRegV(env);
3422 HReg rbp = hregAMD64_RBP();
3433 HReg vHi = newVRegV(env);
3434 HReg vLo = newVRegV(env);
3435 HReg rA = iselIntExpr_R(env, e->Iex.Load.addr);
3449 HReg vHi = generate_zeroes_V128(env);
3450 HReg vLo = newVRegV(env);
3465 HReg argHi, argLo;
3477 HReg argHi, argLo;
3479 HReg dstHi = newVRegV(env);
3480 HReg dstLo = newVRegV(env);
3491 HReg argHi, argLo;
3493 HReg dstHi = newVRegV(env);
3494 HReg dstLo = newVRegV(env);
3507 HReg argHi, argLo;
3509 HReg tmpHi = generate_zeroes_V128(env);
3510 HReg tmpLo = newVRegV(env);
3512 HReg dstHi = newVRegV(env);
3513 HReg dstLo = newVRegV(env);
3530 HReg argHi, argLo;
3532 HReg tmpHi = newVRegV(env);
3533 HReg tmpLo = newVRegV(env);
3534 HReg zero = generate_zeroes_V128(env);
3535 HReg dstHi, dstLo;
3563 HReg argLhi, argLlo, argRhi, argRlo;
3566 HReg dstHi = newVRegV(env);
3567 HReg dstLo = newVRegV(env);
3585 HReg argLhi, argLlo, argRhi, argRlo;
3588 HReg dstHi = newVRegV(env);
3589 HReg dstLo = newVRegV(env);
3604 HReg argLhi, argLlo, argRhi, argRlo;
3607 HReg dstHi = newVRegV(env);
3608 HReg dstLo = newVRegV(env);
3630 HReg rsp = hregAMD64_RSP();
3631 HReg vHi = newVRegV(env);
3632 HReg vLo = newVRegV(env);
3693 HReg r = iselIntExpr_R(env, stmt->Ist.Store.data);
3701 HReg r = iselDblExpr(env, stmt->Ist.Store.data);
3707 HReg r = iselFltExpr(env, stmt->Ist.Store.data);
3713 HReg r = iselVecExpr(env, stmt->Ist.Store.data);
3718 HReg rA = iselIntExpr_R(env, stmt->Ist.Store.addr);
3721 HReg vHi, vLo;
3747 HReg r = iselIntExpr_R(env, stmt->Ist.Put.data);
3756 HReg f32 = iselFltExpr(env, stmt->Ist.Put.data);
3763 HReg f64 = iselDblExpr(env, stmt->Ist.Put.data);
3770 HReg vec = iselVecExpr(env, stmt->Ist.Put.data);
3777 HReg vHi, vLo;
3779 HReg rbp = hregAMD64_RBP();
3800 HReg val = iselDblExpr(env, puti->data);
3805 HReg r = iselIntExpr_R(env, puti->data);
3832 HReg dst = lookupIRTemp(env, tmp);
3837 HReg src = am->Aam.IR.reg;
3848 HReg dst = lookupIRTemp(env, tmp);
3853 HReg rHi, rLo, dstHi, dstLo;
3862 HReg dst = lookupIRTemp(env, tmp);
3867 HReg dst = lookupIRTemp(env, tmp);
3868 HReg src = iselDblExpr(env, stmt->Ist.WrTmp.data);
3873 HReg dst = lookupIRTemp(env, tmp);
3874 HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data);
3879 HReg dst = lookupIRTemp(env, tmp);
3880 HReg src = iselVecExpr(env, stmt->Ist.WrTmp.data);
3885 HReg rHi, rLo, dstHi, dstLo;
3919 HReg dst = lookupIRTemp(env, d->tmp);
3946 HReg rData = iselIntExpr_R(env, cas->dataLo);
3947 HReg rExpd = iselIntExpr_R(env, cas->expdLo);
3948 HReg rOld = lookupIRTemp(env, cas->oldLo);
3974 HReg rDataHi = iselIntExpr_R(env, cas->dataHi);
3975 HReg rDataLo = iselIntExpr_R(env, cas->dataLo);
3976 HReg rExpdHi = iselIntExpr_R(env, cas->expdHi);
3977 HReg rExpdLo = iselIntExpr_R(env, cas->expdLo);
3978 HReg rOldHi = lookupIRTemp(env, cas->oldHi);
3979 HReg rOldLo = lookupIRTemp(env, cas->oldLo);
4051 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
4070 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
4127 HReg r = iselIntExpr_R(env, next);
4138 HReg r = iselIntExpr_R(env, next);
4164 HReg r = iselIntExpr_R(env, next);
4199 HReg hreg, hregHI;
4222 /* Make up an IRTemp -> virtual HReg mapping. This doesn't
4225 env->vregmap = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
4226 env->vregmapHI = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
4237 hregHI = hreg = INVALID_HREG;
4241 hreg = mkHReg(j++, HRcInt64, True);
4244 hreg = mkHReg(j++, HRcInt64, True);
4250 hreg = mkHReg(j++, HRcVec128, True);
4253 hreg = mkHReg(j++, HRcVec128, True);
4260 env->vregmap[i] = hreg;