Home | History | Annotate | Download | only in priv

Lines Matching refs:HReg

227    - A mapping from IRTemp to HReg.  This tells the insn selector
277 HReg* vregmapLo; // Low 64-bits [63:0] Low 32-bits [31:0]
278 HReg* vregmapMedLo; // high 64-bits[127:64] Next 32-bits [63:32]
279 HReg* vregmapMedHi; // unused Next 32-bits [95:64]
280 HReg* vregmapHi; // unused highest 32-bits [127:96]
302 static HReg lookupIRTemp ( ISelEnv* env, IRTemp tmp )
309 static void lookupIRTempPair ( HReg* vrHI, HReg* vrLO,
320 static void lookupIRTempQuad ( HReg* vrHi, HReg* vrMedHi, HReg* vrMedLo,
321 HReg* vrLo, ISelEnv* env, IRTemp tmp )
342 static HReg newVRegI ( ISelEnv* env )
344 HReg reg = mkHReg(env->vreg_ctr, HRcGPR(env->mode64),
350 static HReg newVRegF ( ISelEnv* env )
352 HReg reg = mkHReg(env->vreg_ctr, HRcFlt64, True/*virtual reg*/);
357 static HReg newVRegV ( ISelEnv* env )
359 HReg reg = mkHReg(env->vreg_ctr, HRcVec128, True/*virtual reg*/);
382 static HReg iselWordExpr_R_wrk ( ISelEnv* env, IRExpr* e );
383 static HReg iselWordExpr_R ( ISelEnv* env, IRExpr* e );
430 static void iselInt128Expr_to_32x4_wrk ( HReg* rHi, HReg* rMedHi,
431 HReg* rMedLo, HReg* rLo,
433 static void iselInt128Expr_to_32x4 ( HReg* rHi, HReg* rMedHi,
434 HReg* rMedLo, HReg* rLo,
439 static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
441 static void iselInt64Expr ( HReg* rHi, HReg* rLo,
445 static void iselInt128Expr_wrk ( HReg* rHi, HReg* rLo,
447 static void iselInt128Expr ( HReg* rHi, HReg* rLo,
453 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e );
454 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e );
456 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e );
457 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e );
459 static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e );
460 static HReg iselVecExpr ( ISelEnv* env, IRExpr* e );
463 static HReg iselDfp32Expr_wrk ( ISelEnv* env, IRExpr* e );
464 static HReg iselDfp32Expr ( ISelEnv* env, IRExpr* e );
465 static HReg iselDfp64Expr_wrk ( ISelEnv* env, IRExpr* e );
466 static HReg iselDfp64Expr ( ISelEnv* env, IRExpr* e );
469 static void iselDfp128Expr_wrk ( HReg* rHi, HReg* rLo, ISelEnv* env,
471 static void iselDfp128Expr ( HReg* rHi, HReg* rLo, ISelEnv* env,
480 static PPCInstr* mk_iMOVds_RR ( HReg r_dst, HReg r_src )
492 HReg sp = StackFramePtr(env->mode64);
500 HReg sp = StackFramePtr(env->mode64);
512 static HReg get_sp_aligned16 ( ISelEnv* env )
514 HReg r = newVRegI(env);
515 HReg align16 = newVRegI(env);
530 static HReg mk_LoadRR32toFPR ( ISelEnv* env,
531 HReg r_srcHi, HReg r_srcLo )
533 HReg fr_dst = newVRegF(env);
556 static HReg mk_LoadR64toFPR ( ISelEnv* env, HReg r_src )
558 HReg fr_dst = newVRegF(env);
601 HReg rtmp, roff;
691 HReg argregs[PPC_N_REGPARMS];
692 HReg tmpregs[PPC_N_REGPARMS];
869 HReg rHi, rLo;
906 HReg r_vecRetAddr = INVALID_HREG;
945 HReg rHi, rLo;
1046 // HReg fr_src = newVRegF(env);
1047 // HReg r_src = newVRegI(env);
1064 static HReg roundModeIRtoPPC ( ISelEnv* env, HReg r_rmIR )
1079 HReg r_rmPPC = newVRegI(env);
1080 HReg r_tmp1 = newVRegI(env);
1081 HReg r_tmp2 = newVRegI(env);
1136 HReg fr_src = newVRegF(env);
1137 HReg r_src;
1163 HReg r_tmp1 = newVRegI( env );
1173 HReg r_zero = newVRegI( env );
1202 static HReg generate_zeroes_V128 ( ISelEnv* env )
1204 HReg dst = newVRegV(env);
1211 static HReg generate_ones_V128 ( ISelEnv* env )
1213 HReg dst = newVRegV(env);
1227 static HReg mk_AvDuplicateRI( ISelEnv* env, IRExpr* e )
1229 HReg r_src;
1230 HReg dst = newVRegV(env);
1244 HReg v1 = newVRegV(env);
1245 HReg v2 = newVRegV(env);
1255 HReg v1 = newVRegV(env);
1256 HReg v2 = newVRegV(env);
1283 HReg r_aligned16;
1284 HReg v_src = newVRegV(env);
1307 static HReg isNan ( ISelEnv* env, HReg vSrc )
1309 HReg zeros, msk_exp, msk_mnt, expt, mnts, vIsNan;
1351 static HReg iselWordExpr_R ( ISelEnv* env, IRExpr* e )
1353 HReg r = iselWordExpr_R_wrk(env, e);
1365 static HReg iselWordExpr_R_wrk ( ISelEnv* env, IRExpr* e )
1383 HReg r_dst;
1418 HReg r_dst = newVRegI(env);
1419 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1451 HReg r_dst = newVRegI(env);
1452 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1470 HReg tmp = newVRegI(env);
1500 HReg r_dst = newVRegI(env);
1501 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1502 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1518 HReg r_dst = newVRegI(env);
1519 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1520 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1540 HReg r_dst = newVRegI(env);
1541 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1542 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1552 HReg tLo = newVRegI(env);
1553 HReg tHi = newVRegI(env);
1554 HReg r_dst = newVRegI(env);
1556 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1557 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
1575 HReg dst = newVRegI(env);
1576 HReg srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1589 HReg dst = newVRegI(env);
1590 HReg srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
1602 HReg r1 = iselWordExpr_R(env, e->Iex.Binop.arg1);
1603 HReg r2 = iselWordExpr_R(env, e->Iex.Binop.arg2);
1604 HReg rdst = newVRegI(env);
1614 HReg r_Hi = iselWordExpr_R(env, e->Iex.Binop.arg1);
1615 HReg r_Lo = iselWordExpr_R(env, e->Iex.Binop.arg2);
1616 HReg r_Tmp = newVRegI(env);
1617 HReg r_dst = newVRegI(env);
1618 HReg msk = newVRegI(env);
1634 HReg fr_srcL;
1635 HReg fr_srcL_lo;
1636 HReg fr_srcR;
1637 HReg fr_srcR_lo;
1639 HReg r_ccPPC = newVRegI(env);
1640 HReg r_ccIR = newVRegI(env);
1641 HReg r_ccIR_b0 = newVRegI(env);
1642 HReg r_ccIR_b2 = newVRegI(env);
1643 HReg r_ccIR_b6 = newVRegI(env);
1712 HReg r1 = StackFramePtr(env->mode64);
1714 HReg fsrc = iselDblExpr(env, e->Iex.Binop.arg2);
1715 HReg ftmp = newVRegF(env);
1716 HReg idst = newVRegI(env);
1743 HReg r1 = StackFramePtr(env->mode64);
1745 HReg fsrc = iselDblExpr(env, e->Iex.Binop.arg2);
1746 HReg idst = newVRegI(env);
1747 HReg ftmp = newVRegF(env);
1768 HReg r1 = StackFramePtr(env->mode64);
1770 HReg fr_src = iselDfp64Expr(env, e->Iex.Binop.arg2);
1771 HReg idst = newVRegI(env);
1772 HReg ftmp = newVRegF(env);
1790 HReg r_srcHi = newVRegF(env);
1791 HReg r_srcLo = newVRegF(env);
1792 HReg idst = newVRegI(env);
1793 HReg ftmp = newVRegF(env);
1819 HReg r_dst = newVRegI(env);
1820 HReg r_src = iselWordExpr_R(env, expr32);
1833 HReg r_dst = newVRegI(env);
1847 HReg r_dst = newVRegI(env);
1848 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1856 HReg r_dst = newVRegI(env);
1857 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1870 HReg r_dst = newVRegI(env);
1871 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1883 HReg r_dst = newVRegI(env);
1884 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1896 HReg r_dst = newVRegI(env);
1897 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1911 HReg r_dst = newVRegI(env);
1912 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1918 HReg rHi, rLo;
1922 HReg r_dst = newVRegI(env);
1923 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1932 HReg rHi, rLo;
1948 HReg r_dst = newVRegI(env);
1949 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
1958 HReg rHi, rLo;
1965 HReg rHi, rLo;
1974 HReg r_dst = newVRegI(env);
1984 HReg r_dst = newVRegI(env);
1998 HReg r_dst = newVRegI(env);
2010 HReg r_src, r_dst;
2026 HReg r_src, r_dst;
2037 HReg r_dst = newVRegI(env);
2038 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
2047 HReg r_dst = newVRegI(env);
2048 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
2058 HReg r_aligned16;
2059 HReg dst = newVRegI(env);
2060 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
2082 HReg r_aligned16;
2083 HReg dst = newVRegI(env);
2084 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
2119 HReg fr_src = iselDblExpr(env, e->Iex.Unop.arg);
2120 HReg r_dst = newVRegI(env);
2143 HReg fr_src = iselFltExpr(env, e->Iex.Unop.arg);
2144 HReg r_dst = newVRegI(env);
2163 HReg fr_src = iselDfp64Expr(env, e->Iex.Unop.arg);
2164 HReg r_dst = newVRegI(env);
2185 HReg argregs[1];
2186 HReg r_dst = newVRegI(env);
2214 HReg argregs[1];
2215 HReg r_dst = newVRegI(env);
2244 HReg fr_dst = newVRegI(env);
2245 HReg fr_src = iselDfp64Expr(env, e->Iex.Unop.arg);
2246 HReg tmp = newVRegF(env);
2258 HReg fr_dst = newVRegI(env);
2259 HReg r_srcHi;
2260 HReg r_srcLo;
2261 HReg tmp = newVRegF(env);
2285 HReg r_dst = newVRegI(env);
2299 HReg r_dst = newVRegI(env);
2332 HReg r_dst = newVRegI(env);
2341 HReg r_dst = newVRegI(env);
2361 HReg r0 = iselWordExpr_R(env, e->Iex.ITE.iffalse);
2362 HReg r_dst = newVRegI(env);
2480 HReg r_base = iselWordExpr_R(env, e->Iex.Binop.arg1);
2481 HReg r_idx = iselWordExpr_R(env, e->Iex.Binop.arg2);
2503 HReg r_base = iselWordExpr_R(env, e->Iex.Binop.arg1);
2504 HReg r_idx = iselWordExpr_R(env, e->Iex.Binop.arg2);
2742 HReg r_zero = newVRegI(env);
2762 HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
2763 HReg tmp = newVRegI(env);
2779 HReg arg = iselWordExpr_R(env, e->Iex.Unop.arg);
2780 HReg tmp = newVRegI(env);
2793 HReg r1 = iselWordExpr_R(env, e->Iex.Unop.arg);
2811 HReg r1 = iselWordExpr_R(env, e->Iex.Binop.arg1);
2833 HReg hi, lo;
2834 HReg tmp = newVRegI(env);
2841 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
2860 HReg r1 = iselWordExpr_R(env, e->Iex.Binop.arg1);
2883 HReg arg = iselWordExpr_R(env, e->Iex.Binop.arg1);
2884 HReg tmp = newVRegI(env);
2894 HReg r_src = lookupIRTemp(env, e->Iex.RdTmp.tmp);
2895 HReg src_masked = newVRegI(env);
2921 static void iselInt128Expr ( HReg* rHi, HReg* rLo,
2936 static void iselInt128Expr_wrk ( HReg* rHi, HReg* rLo,
2954 HReg tLo = newVRegI(env);
2955 HReg tHi = newVRegI(env);
2957 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
2958 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
3000 static void iselInt128Expr_to_32x4 ( HReg* rHi, HReg* rMedHi, HReg* rMedLo,
3001 HReg* rLo, ISelEnv* env, IRExpr* e )
3018 static void iselInt128Expr_to_32x4_wrk ( HReg* rHi, HReg* rMedHi,
3019 HReg* rMedLo, HReg* rLo,
3056 static void iselInt64Expr ( HReg* rHi, HReg* rLo,
3071 static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
3079 HReg tLo = newVRegI(env);
3080 HReg tHi = newVRegI(env);
3081 HReg r_addr = iselWordExpr_R(env, e->Iex.Load.addr);
3099 HReg tLo = newVRegI(env);
3100 HReg tHi = newVRegI(env);
3120 HReg tLo = newVRegI(env);
3121 HReg tHi = newVRegI(env);
3131 HReg e0Lo, e0Hi, eXLo, eXHi;
3134 HReg tLo = newVRegI(env);
3135 HReg tHi = newVRegI(env);
3153 HReg tLo = newVRegI(env);
3154 HReg tHi = newVRegI(env);
3156 HReg r_srcL = iselWordExpr_R(env, e->Iex.Binop.arg1);
3157 HReg r_srcR = iselWordExpr_R(env, e->Iex.Binop.arg2);
3173 HReg xLo, xHi, yLo, yHi;
3174 HReg tLo = newVRegI(env);
3175 HReg tHi = newVRegI(env);
3189 HReg xLo, xHi, yLo, yHi;
3190 HReg tLo = newVRegI(env);
3191 HReg tHi = newVRegI(env);
3211 HReg tLo = newVRegI(env);
3212 HReg tHi = newVRegI(env);
3213 HReg r1 = StackFramePtr(env->mode64);
3216 HReg fsrc = iselDblExpr(env, e->Iex.Binop.arg2);
3217 HReg ftmp = newVRegF(env);
3239 HReg tLo = newVRegI(env);
3240 HReg tHi = newVRegI(env);
3241 HReg r1 = StackFramePtr(env->mode64);
3244 HReg fr_src = iselDfp64Expr(env, e->Iex.Binop.arg2);
3245 HReg tmp = newVRegF(env);
3262 HReg r_srcHi = newVRegF(env);
3263 HReg r_srcLo = newVRegF(env);
3264 HReg tLo = newVRegI(env);
3265 HReg tHi = newVRegI(env);
3266 HReg ftmp = newVRegF(env);
3296 HReg argHi, argLo;
3297 HReg tmp1 = newVRegI(env);
3298 HReg tmp2 = newVRegI(env);
3314 HReg argHi, argLo;
3315 HReg zero32 = newVRegI(env);
3316 HReg resHi = newVRegI(env);
3317 HReg resLo = newVRegI(env);
3336 HReg tHi = newVRegI(env);
3337 HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
3345 HReg tmp = newVRegF(env);
3346 HReg fr_src = iselDfp64Expr(env, e->Iex.Unop.arg);
3347 HReg tLo = newVRegI(env);
3348 HReg tHi = newVRegI(env);
3365 HReg r_srcHi;
3366 HReg r_srcLo;
3367 HReg tmp = newVRegF(env);
3368 HReg tLo = newVRegI(env);
3369 HReg tHi = newVRegI(env);
3390 HReg tHi = newVRegI(env);
3391 HReg tLo = iselWordExpr_R(env, e->Iex.Unop.arg);
3401 HReg r_Hi = INVALID_HREG;
3402 HReg r_MedHi = INVALID_HREG;
3403 HReg r_MedLo = INVALID_HREG;
3404 HReg r_Lo = INVALID_HREG;
3416 HReg r_Hi = INVALID_HREG;
3417 HReg r_MedHi = INVALID_HREG;
3418 HReg r_MedLo = INVALID_HREG;
3419 HReg r_Lo = INVALID_HREG;
3431 HReg r_aligned16;
3433 HReg tLo = newVRegI(env);
3434 HReg tHi = newVRegI(env);
3435 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
3463 HReg tLo = newVRegI(env);
3464 HReg tHi = newVRegI(env);
3478 HReg xLo, xHi;
3479 HReg tmpLo = newVRegI(env);
3480 HReg tmpHi = newVRegI(env);
3494 HReg fr_src = iselDblExpr(env, e->Iex.Unop.arg);
3495 HReg r_dstLo = newVRegI(env);
3496 HReg r_dstHi = newVRegI(env);
3519 HReg fr_src = iselDfp64Expr(env, e->Iex.Unop.arg);
3521 HReg r_dstLo = newVRegI(env);
3522 HReg r_dstHi = newVRegI(env);
3549 HReg argregs[2];
3551 HReg tLo = newVRegI(env);
3552 HReg tHi = newVRegI(env);
3553 HReg tmpHi;
3554 HReg tmpLo;
3589 HReg argregs[2];
3591 HReg tLo = newVRegI(env);
3592 HReg tHi = newVRegI(env);
3593 HReg tmpHi;
3594 HReg tmpLo;
3644 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e )
3646 HReg r = iselFltExpr_wrk( env, e );
3656 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
3669 HReg r_dst = newVRegF(env);
3677 HReg r_dst = newVRegF(env);
3713 HReg fsrc = iselDblExpr(env, e->Iex.Unop.arg);
3714 HReg fdst = newVRegF(env);
3730 HReg fdst = newVRegF(env);
3731 HReg isrc = iselWordExpr_R(env, e->Iex.Binop.arg2);
3732 HReg r1 = StackFramePtr(env->mode64);
3753 HReg fdst = newVRegF(env);
3754 HReg isrcHi, isrcLo;
3755 HReg r1 = StackFramePtr(env->mode64);
3815 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e )
3817 HReg r = iselDblExpr_wrk( env, e );
3827 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
3856 HReg r_srcHi = newVRegI(env);
3857 HReg r_srcLo = newVRegI(env);
3862 HReg r_src = newVRegI(env);
3870 HReg r_dst = newVRegF(env);
3880 HReg r_dst = newVRegF(env);
3898 HReg r_dst = newVRegF(env);
3899 HReg r_srcML = iselDblExpr(env, e->Iex.Qop.details->arg2);
3900 HReg r_srcMR = iselDblExpr(env, e->Iex.Qop.details->arg3);
3901 HReg r_srcAcc = iselDblExpr(env, e->Iex.Qop.details->arg4);
3924 HReg r_dst = newVRegF(env);
3925 HReg r_srcL = iselDblExpr(env, triop->arg2);
3926 HReg r_srcR = iselDblExpr(env, triop->arg3);
3940 HReg fr_dst = newVRegF(env);
3941 HReg fr_src = iselDblExpr(env, e->Iex.Binop.arg2);
3951 HReg r_dst = newVRegF(env);
3952 HReg r_src = iselDblExpr(env, e->Iex.Binop.arg2);
3961 HReg fdst = newVRegF(env);
3962 HReg isrc = iselWordExpr_R(env, e->Iex.Binop.arg2);
3963 HReg r1 = StackFramePtr(env->mode64);
3985 HReg fdst = newVRegF(env);
3986 HReg isrcHi, isrcLo;
3987 HReg r1 = StackFramePtr(env->mode64);
4029 HReg fr_dst = newVRegF(env);
4030 HReg fr_src = iselDblExpr(env, e->Iex.Unop.arg);
4042 HReg r_srcHi, r_srcLo;
4046 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
4056 HReg src = iselWordExpr_R(env, e->Iex.Unop.arg);
4057 HReg fr_dst = newVRegF(env);
4076 HReg res = iselFltExpr(env, e->Iex.Unop.arg);
4088 HReg fr1 = iselDblExpr(env, e->Iex.ITE.iftrue);
4089 HReg fr0 = iselDblExpr(env, e->Iex.ITE.iffalse);
4090 HReg fr_dst = newVRegF(env);
4103 static HReg iselDfp32Expr(ISelEnv* env, IRExpr* e)
4105 HReg r = iselDfp32Expr_wrk( env, e );
4112 static HReg iselDfp32Expr_wrk(ISelEnv* env, IRExpr* e)
4122 HReg r_dst = newVRegF( env );
4132 HReg r_dst = newVRegF(env);
4142 HReg fr_dst = newVRegF(env);
4143 HReg fr_src = iselDfp64Expr(env, e->Iex.Binop.arg2);
4154 static HReg iselDfp64Expr(ISelEnv* env, IRExpr* e)
4156 HReg r = iselDfp64Expr_wrk( env, e );
4163 static HReg iselDfp64Expr_wrk(ISelEnv* env, IRExpr* e)
4167 HReg r_dstHi, r_dstLo;
4178 HReg r_dst = newVRegF( env );
4187 HReg r_dst = newVRegF(env);
4196 HReg r_dst = newVRegF( env );
4201 HReg fr_dst = newVRegF(env);
4207 HReg r_srcHi, r_srcLo;
4211 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
4216 HReg fr_src = iselDfp32Expr(env, e->Iex.Unop.arg);
4227 HReg fr_srcL = iselDblExpr(env, e->Iex.Binop.arg1);
4228 HReg fr_srcR = iselDblExpr(env, e->Iex.Binop.arg2);
4242 HReg fr_dst = newVRegF(env);
4252 HReg r_srcHi = newVRegF(env);
4253 HReg r_srcLo = newVRegF(env);
4261 HReg fr_src = newVRegF(env);
4274 HReg fr_src = iselDfp64Expr(env, e->Iex.Binop.arg2);
4280 HReg fr_src = newVRegF(env);
4288 HReg tmp = iselWordExpr_R(env, e->Iex.Binop.arg2);
4292 HReg tmpHi, tmpLo;
4313 HReg fr_src = iselDfp64Expr(env, e->Iex.Binop.arg1);
4330 HReg fr_srcL = newVRegF(env);
4331 HReg fr_srcR = iselDfp64Expr(env, e->Iex.Binop.arg2);
4337 HReg tmp = iselWordExpr_R(env, e->Iex.Binop.arg1);
4342 HReg tmpHi;
4343 HReg tmpLo;
4379 HReg r_dst = newVRegF( env );
4380 HReg r_srcL = iselDfp64Expr( env, triop->arg2 );
4381 HReg r_srcR = iselDfp64Expr( env, triop->arg3 );
4394 HReg r_dst = newVRegF(env);
4395 HReg r_srcL = iselDfp64Expr(env, triop->arg2);
4396 HReg r_srcR = iselDfp64Expr(env, triop->arg3);
4403 HReg r_dst = newVRegF(env);
4404 HReg r_srcL = newVRegF(env);
4405 HReg r_srcR = iselDfp64Expr(env, triop->arg3);
4408 HReg i8_val = iselWordExpr_R(env, triop->arg2);
4430 static void iselDfp128Expr(HReg* rHi, HReg* rLo, ISelEnv* env, IRExpr* e)
4438 static void iselDfp128Expr_wrk(HReg* rHi, HReg *rLo, ISelEnv* env, IRExpr* e)
4450 HReg r_dstHi = newVRegF(env);
4451 HReg r_dstLo = newVRegF(env);
4454 HReg fr_src = newVRegF(env);
4459 HReg tmp = iselWordExpr_R(env, e->Iex.Unop.arg);
4462 HReg tmpHi, tmpLo;
4476 HReg r_src = iselDfp64Expr(env, e->Iex.Unop.arg);
4492 HReg r_srcHi;
4493 HReg r_srcLo;
4505 HReg fr_dst = newVRegF(env);
4520 HReg fr_dst_hi = newVRegF(env);
4521 HReg fr_dst_lo = newVRegF(env);
4538 HReg r_dstHi = newVRegF(env);
4539 HReg r_dstLo = newVRegF(env);
4552 HReg r_dstHi = newVRegF(env);
4553 HReg r_dstLo = newVRegF(env);
4554 HReg r_srcL = newVRegF(env);
4563 HReg tmp = iselWordExpr_R(env, e->Iex.Binop.arg1);
4566 HReg tmpHi, tmpLo;
4592 HReg r_dstHi = newVRegF(env);
4593 HReg r_dstLo = newVRegF(env);
4613 HReg r_srcRHi = newVRegV( env );
4614 HReg r_srcRLo = newVRegV( env );
4633 HReg r_srcHi = newVRegF(env);
4634 HReg r_srcLo = newVRegF(env);
4649 HReg r_srcHi = newVRegF(env);
4650 HReg r_srcLo = newVRegF(env);
4654 HReg i8_val = iselWordExpr_R(env, triop->arg2);
4655 HReg r_zero = newVRegI( env );
4699 static HReg iselVecExpr ( ISelEnv* env, IRExpr* e )
4701 HReg r = iselVecExpr_wrk( env, e );
4711 static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e )
4727 HReg dst = newVRegV(env);
4737 HReg v_dst = newVRegV(env);
4748 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4749 HReg dst = newVRegV(env);
4755 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4756 HReg zero = newVRegV(env);
4757 HReg dst = newVRegV(env);
4765 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4766 HReg zero = newVRegV(env);
4767 HReg dst = newVRegV(env);
4775 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4776 HReg zero = newVRegV(env);
4777 HReg dst = newVRegV(env);
4785 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4786 HReg zero = newVRegV(env);
4787 HReg dst = newVRegV(env);
4806 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4807 HReg dst = newVRegV(env);
4813 HReg r_aligned16, r_zeros;
4814 HReg r_src = iselWordExpr_R(env, e->Iex.Unop.arg);
4815 HReg dst = newVRegV(env);
4850 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4851 HReg dst = newVRegV(env);
4863 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
4864 HReg dst = newVRegV(env);
4879 HReg r3, r2, r1, r0, r_aligned16;
4881 HReg dst = newVRegV(env);
4907 HReg rHi = iselWordExpr_R(env, e->Iex.Binop.arg1);
4908 HReg rLo = iselWordExpr_R(env, e->Iex.Binop.arg2);
4909 HReg dst = newVRegV(env);
4910 HReg r_aligned16;
4939 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
4940 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
4941 HReg dst = newVRegV(env);
4947 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
4948 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
4949 HReg dst = newVRegV(env);
4955 HReg isNanLR = newVRegV(env);
4956 HReg isNanL = isNan(env, argL);
4957 HReg isNanR = isNan(env, argR);
4972 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
4973 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
4974 HReg dst = newVRegV(env);
5004 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
5005 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
5006 HReg dst = newVRegV(env);
5039 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
5040 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
5041 HReg dst = newVRegV(env);
5077 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
5078 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
5079 HReg dst = newVRegV(env);
5104 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
5105 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
5106 HReg dst = newVRegV(env);
5114 HReg r_src = iselVecExpr(env, e->Iex.Binop.arg1);
5115 HReg dst = newVRegV(env);
5116 HReg v_shft = mk_AvDuplicateRI(env, e->Iex.Binop.arg2);
5125 HReg r_src = iselVecExpr(env, e->Iex.Binop.arg1);
5126 HReg dst = newVRegV(env);
5127 HReg v_shft = mk_AvDuplicateRI(env, e->Iex.Binop.arg2);
5136 HReg r_src = iselVecExpr(env, e->Iex.Binop.arg1);
5137 HReg dst = newVRegV(env);
5138 HReg v_shft = mk_AvDuplicateRI(env, e->Iex.Binop.arg2);
5147 HReg r_src = iselVecExpr(env, e->Iex.Binop.arg1);
5148 HReg dst = newVRegV(env);
5149 HReg v_shft = mk_AvDuplicateRI(env, e->Iex.Binop.arg2);
5157 HReg dst = newVRegV(env);
5158 HReg r_src = iselVecExpr(env, e->Iex.Binop.arg1);
5159 HReg v_shft = mk_AvDuplicateRI(env, e->Iex.Binop.arg2);
5166 HReg dst = newVRegV(env);
5167 HReg v_src = iselVecExpr(env, e->Iex.Binop.arg1);
5168 HReg v_ctl = iselVecExpr(env, e->Iex.Binop.arg2);
5178 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
5179 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
5180 HReg dst = newVRegV(env);
5188 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
5189 HReg dst = newVRegV(env);
5205 HReg arg1 = iselVecExpr(env, triop->arg1);
5206 HReg arg2 = iselVecExpr(env, triop->arg2);
5207 HReg dst = newVRegV(env);
5218 HReg argL = iselVecExpr(env, triop->arg2);
5219 HReg argR = iselVecExpr(env, triop->arg3);
5220 HReg dst = newVRegV(env);
5288 HReg r_src = iselWordExpr_R(env, stmt->Ist.Store.data);
5296 HReg fr_src = iselDblExpr(env, stmt->Ist.Store.data);
5304 HReg fr_src = iselFltExpr(env, stmt->Ist.Store.data);
5312 HReg fr_src = iselDfp64Expr(env, stmt->Ist.Store.data);
5320 HReg fr_src = iselDfp32Expr(env, stmt->Ist.Store.data);
5328 HReg v_src = iselVecExpr(env, stmt->Ist.Store.data);
5337 HReg rHi32, rLo32;
5338 HReg r_addr = iselWordExpr_R(env, stmt->Ist.Store.addr);
5358 HReg r_src = iselWordExpr_R(env, stmt->Ist.Put.data);
5366 HReg rHi, rLo;
5378 HReg v_src = iselVecExpr(env, stmt->Ist.Put.data);
5386 HReg fr_src = iselDblExpr(env, stmt->Ist.Put.data);
5395 HReg fr_src = iselDfp32Expr( env, stmt->Ist.Put.data );
5403 HReg fr_src = iselDfp64Expr( env, stmt->Ist.Put.data );
5422 HReg r_src = iselWordExpr_R(env, puti->data);
5428 HReg r_src = iselWordExpr_R(env, puti->data);
5442 HReg r_dst = lookupIRTemp(env, tmp);
5443 HReg r_src = iselWordExpr_R(env, stmt->Ist.WrTmp.data);
5448 HReg r_srcHi, r_srcLo, r_dstHi, r_dstLo;
5457 HReg r_srcHi, r_srcLo, r_dstHi, r_dstLo;
5465 HReg r_srcHi, r_srcMedHi, r_srcMedLo, r_srcLo;
5466 HReg r_dstHi, r_dstMedHi, r_dstMedLo, r_dstLo;
5483 HReg r_dst = lookupIRTemp(env, tmp);
5488 HReg fr_dst = lookupIRTemp(env, tmp);
5489 HReg fr_src = iselDblExpr(env, stmt->Ist.WrTmp.data);
5494 HReg fr_dst = lookupIRTemp(env, tmp);
5495 HReg fr_src = iselFltExpr(env, stmt->Ist.WrTmp.data);
5500 HReg fr_dst = lookupIRTemp(env, tmp);
5501 HReg fr_src = iselDfp32Expr(env, stmt->Ist.WrTmp.data);
5506 HReg v_dst = lookupIRTemp(env, tmp);
5507 HReg v_src = iselVecExpr(env, stmt->Ist.WrTmp.data);
5512 HReg fr_dst = lookupIRTemp( env, tmp );
5513 HReg fr_src = iselDfp64Expr( env, stmt->Ist.WrTmp.data );
5518 HReg fr_srcHi, fr_srcLo, fr_dstHi, fr_dstLo;
5544 HReg r_addr = iselWordExpr_R( env, stmt->Ist.LLSC.addr );
5545 HReg r_dst = lookupIRTemp(env, res);
5557 HReg r_res = lookupIRTemp(env, res); /* :: Ity_I1 */
5558 HReg r_a = iselWordExpr_R(env, stmt->Ist.LLSC.addr);
5559 HReg r_src = iselWordExpr_R(env, stmt->Ist.LLSC.storedata);
5560 HReg r_tmp = newVRegI(env);
5643 HReg r_dst = lookupIRTemp(env, d->tmp);
5653 HReg r_dst = lookupIRTemp(env, d->tmp);
5660 HReg r_dstHi = INVALID_HREG;
5661 HReg r_dstLo = INVALID_HREG;
5676 HReg dst = lookupIRTemp(env, d->tmp);
5748 HReg r = iselWordExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
5767 HReg r = iselWordExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
5829 HReg r = iselWordExpr_R(env, next);
5840 HReg r = iselWordExpr_R(env, next);
5867 HReg r = iselWordExpr_R(env, next);
5901 HReg hregLo, hregMedLo, hregMedHi, hregHi;
5942 /* Make up an IRTemp -> virtual HReg mapping. This doesn't
5949 env->vregmapLo = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
5950 env->vregmapMedLo = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
5955 env->vregmapMedHi = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
5956 env->vregmapHi = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));