Lines Matching defs:hreg
70 - A mapping from IRTemp to HReg. This tells the insn selector
79 64-bit virtual HReg, which holds the high half
115 HReg* vregmap;
116 HReg* vregmapHI;
132 static HReg lookupIRTemp ( ISelEnv* env, IRTemp tmp )
148 static HReg newVRegI ( ISelEnv* env )
150 HReg reg = mkHReg(env->vreg_ctr, HRcInt64, True/*virtual reg*/);
155 static HReg newVRegD ( ISelEnv* env )
157 HReg reg = mkHReg(env->vreg_ctr, HRcFlt64, True/*virtual reg*/);
162 //ZZ static HReg newVRegF ( ISelEnv* env )
164 //ZZ HReg reg = mkHReg(env->vreg_ctr, HRcFlt32, True/*virtual reg*/);
169 static HReg newVRegV ( ISelEnv* env )
171 HReg reg = mkHReg(env->vreg_ctr, HRcVec128, True/*virtual reg*/);
225 static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e );
226 static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e );
228 static void iselInt128Expr_wrk ( /*OUT*/HReg* rHi, HReg* rLo,
230 static void iselInt128Expr ( /*OUT*/HReg* rHi, HReg* rLo,
234 //ZZ static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
236 //ZZ static void iselInt64Expr ( HReg* rHi, HReg* rLo,
239 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e );
240 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e );
242 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e );
243 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e );
245 //ZZ static HReg iselNeon64Expr_wrk ( ISelEnv* env, IRExpr* e );
246 //ZZ static HReg iselNeon64Expr ( ISelEnv* env, IRExpr* e );
248 static HReg iselV128Expr_wrk ( ISelEnv* env, IRExpr* e );
249 static HReg iselV128Expr ( ISelEnv* env, IRExpr* e );
293 static HReg mk_baseblock_128bit_access_addr ( ISelEnv* env, UInt off )
296 HReg r = newVRegI(env);
302 static HReg get_baseblock_register ( void )
309 static HReg widen_z_32_to_64 ( ISelEnv* env, HReg src )
311 HReg dst = newVRegI(env);
319 static HReg widen_s_16_to_64 ( ISelEnv* env, HReg src )
321 HReg dst = newVRegI(env);
330 static HReg widen_z_16_to_64 ( ISelEnv* env, HReg src )
332 HReg dst = newVRegI(env);
341 static HReg widen_s_32_to_64 ( ISelEnv* env, HReg src )
343 HReg dst = newVRegI(env);
352 static HReg widen_s_8_to_64 ( ISelEnv* env, HReg src )
354 HReg dst = newVRegI(env);
361 static HReg widen_z_8_to_64 ( ISelEnv* env, HReg src )
363 HReg dst = newVRegI(env);
446 HReg irrm = iselIntExpr_R(env, mode);
447 HReg tL = newVRegI(env);
448 HReg tR = newVRegI(env);
449 HReg t3 = newVRegI(env);
514 HReg argregs[ARM64_N_ARGREGS];
515 HReg tmpregs[ARM64_N_ARGREGS];
605 HReg r_vecRetAddr = INVALID_HREG;
911 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
926 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
934 HReg reg1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
935 HReg reg2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
941 HReg reg = iselIntExpr_R(env, e);
979 //ZZ HReg reg;
990 //ZZ HReg reg = iselIntExpr_R(env, e);
1005 //ZZ HReg reg = iselIntExpr_R(env, e);
1070 //ZZ HReg r = iselIntExpr_R ( env, e );
1121 HReg r = iselIntExpr_R ( env, e );
1393 HReg r = iselIntExpr_R ( env, e );
1444 HReg r = iselIntExpr_R ( env, e );
1470 HReg rTmp = lookupIRTemp(env, e->Iex.RdTmp.tmp);
1493 HReg rTmp = iselIntExpr_R(env, e->Iex.Unop.arg);
1504 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
1514 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
1524 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
1538 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1560 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1577 //ZZ HReg r;
1605 static HReg iselIntExpr_R ( ISelEnv* env, IRExpr* e )
1607 HReg r = iselIntExpr_R_wrk(env, e);
1618 static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
1632 HReg dst = newVRegI(env);
1673 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1674 HReg dst = newVRegI(env);
1689 HReg dst = newVRegI(env);
1690 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1705 HReg dst = newVRegI(env);
1706 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1721 HReg dst = newVRegI(env);
1722 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1730 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1732 HReg dst = zx ? widen_z_32_to_64(env, argL)
1742 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1743 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1744 HReg dst = newVRegI(env);
1752 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1753 HReg extL = (isS ? widen_s_32_to_64 : widen_z_32_to_64)(env, argL);
1754 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1755 HReg extR = (isS ? widen_s_32_to_64 : widen_z_32_to_64)(env, argR);
1756 HReg dst = newVRegI(env);
1764 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1765 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1766 HReg dst = newVRegI(env);
1773 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1774 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1775 HReg lo32 = widen_z_32_to_64(env, lo32s);
1776 HReg hi32 = newVRegI(env);
1786 HReg dL = (isD ? iselDblExpr : iselFltExpr)(env, e->Iex.Binop.arg1);
1787 HReg dR = (isD ? iselDblExpr : iselFltExpr)(env, e->Iex.Binop.arg2);
1788 HReg dst = newVRegI(env);
1789 HReg imm = newVRegI(env);
1853 HReg src = (srcIsD ? iselDblExpr : iselFltExpr)
1855 HReg dst = newVRegI(env);
1864 //ZZ HReg res = newVRegI(env);
1865 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Binop.arg1);
1889 //ZZ HReg res = newVRegI(env);
1890 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Binop.arg1);
1973 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1974 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1975 HReg res = newVRegI(env);
1995 HReg src = iselIntExpr_R(env, arg);
1996 HReg dst = widen_z_16_to_64(env, src);
2004 HReg dst = newVRegI(env);
2011 HReg src = iselIntExpr_R(env, arg);
2012 HReg dst = widen_z_32_to_64(env, src);
2021 HReg dst = newVRegI(env);
2028 HReg src = iselIntExpr_R(env, arg);
2029 HReg dst = widen_z_8_to_64(env, src);
2033 HReg rHi, rLo;
2039 HReg src = iselIntExpr_R(env, arg);
2040 HReg dst = widen_s_8_to_64(env, src);
2045 HReg src = iselIntExpr_R(env, arg);
2046 HReg dst = widen_s_16_to_64(env, src);
2051 HReg src = iselIntExpr_R(env, arg);
2052 HReg dst = widen_s_32_to_64(env, src);
2057 HReg dst = newVRegI(env);
2058 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2063 HReg dst = newVRegI(env);
2064 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2073 HReg dst = newVRegI(env);
2074 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2083 HReg dst = newVRegI(env);
2084 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2095 HReg dst = newVRegI(env);
2096 HReg pre = iselIntExpr_R(env, e->Iex.Unop.arg);
2097 HReg src = widen_z_32_to_64(env, pre);
2106 HReg dst = newVRegI(env);
2107 HReg src = iselV128Expr(env, e->Iex.Unop.arg);
2116 HReg zero = newVRegI(env);
2117 HReg one = newVRegI(env);
2118 HReg dst = newVRegI(env);
2132 HReg src = iselV128Expr(env, e->Iex.Unop.arg);
2133 HReg tmp = newVRegV(env);
2134 HReg dst = newVRegI(env);
2147 //ZZ HReg rHi, rLo;
2152 //ZZ HReg rHi, rLo;
2157 //ZZ HReg rHi, rLo;
2159 //ZZ HReg tHi = newVRegI(env);
2160 //ZZ HReg tLo = newVRegI(env);
2161 //ZZ HReg tmp = iselNeon64Expr(env, e->Iex.Unop.arg);
2173 HReg dst = newVRegI(env);
2176 HReg src = lookupIRTemp(env, e->Iex.Unop.arg->Iex.RdTmp.tmp);
2181 HReg zero = newVRegI(env);
2182 HReg one = newVRegI(env);
2191 //ZZ HReg dst = newVRegI(env);
2199 //ZZ HReg dst = newVRegI(env);
2214 //ZZ HReg dst = newVRegI(env);
2215 //ZZ HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2221 //ZZ HReg dst = newVRegI(env);
2222 //ZZ HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2230 //ZZ HReg dst = newVRegI(env);
2231 //ZZ HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2258 //ZZ HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
2259 //ZZ HReg res = newVRegI(env);
2274 HReg dst = newVRegI(env);
2282 HReg dst = newVRegI(env);
2290 HReg dst = newVRegI(env);
2298 HReg dst = newVRegI(env);
2309 HReg dst = newVRegI(env);
2339 HReg dst = newVRegI(env);
2356 HReg r1 = iselIntExpr_R(env, e->Iex.ITE.iftrue);
2357 HReg r0 = iselIntExpr_R(env, e->Iex.ITE.iffalse);
2358 HReg dst = newVRegI(env);
2386 static void iselInt128Expr ( HReg* rHi, HReg* rLo,
2400 static void iselInt128Expr_wrk ( HReg* rHi, HReg* rLo,
2413 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
2414 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
2415 HReg dstLo = newVRegI(env);
2416 HReg dstHi = newVRegI(env);
2447 //ZZ static void iselInt64Expr ( HReg* rHi, HReg* rLo, ISelEnv* env, IRExpr* e )
2460 //ZZ static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo, ISelEnv* env, IRExpr* e )
2470 //ZZ HReg tHi = newVRegI(env);
2471 //ZZ HReg tLo = newVRegI(env);
2483 //ZZ HReg tHi = newVRegI(env);
2484 //ZZ HReg tLo = newVRegI(env);
2485 //ZZ HReg tmp = iselNeon64Expr(env, e);
2497 //ZZ HReg tLo, tHi, rA;
2515 //ZZ HReg tHi = newVRegI(env);
2516 //ZZ HReg tLo = newVRegI(env);
2531 //ZZ HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
2532 //ZZ HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
2533 //ZZ HReg tHi = newVRegI(env);
2534 //ZZ HReg tLo = newVRegI(env);
2548 //ZZ HReg xLo, xHi, yLo, yHi;
2549 //ZZ HReg tHi = newVRegI(env);
2550 //ZZ HReg tLo = newVRegI(env);
2561 //ZZ HReg xLo, xHi, yLo, yHi;
2562 //ZZ HReg tHi = newVRegI(env);
2563 //ZZ HReg tLo = newVRegI(env);
2591 //ZZ HReg dstHi = newVRegI(env);
2592 //ZZ HReg dstLo = newVRegI(env);
2593 //ZZ HReg src = iselDblExpr(env, e->Iex.Unop.arg);
2602 //ZZ HReg yLo, yHi;
2603 //ZZ HReg tHi = newVRegI(env);
2604 //ZZ HReg tLo = newVRegI(env);
2605 //ZZ HReg zero = newVRegI(env);
2628 //ZZ HReg srcLo, srcHi;
2629 //ZZ HReg tmp1 = newVRegI(env);
2630 //ZZ HReg tmp2 = newVRegI(env);
2648 //ZZ HReg dst = newVRegI(env);
2671 //ZZ HReg r1hi, r1lo, r0hi, r0lo, dstHi, dstLo;
2693 //ZZ HReg tHi = newVRegI(env);
2694 //ZZ HReg tLo = newVRegI(env);
2695 //ZZ HReg tmp = iselNeon64Expr(env, e);
2711 //ZZ static HReg iselNeon64Expr ( ISelEnv* env, IRExpr* e )
2713 //ZZ HReg r = iselNeon64Expr_wrk( env, e );
2720 //ZZ static HReg iselNeon64Expr_wrk ( ISelEnv* env, IRExpr* e )
2732 //ZZ HReg rLo, rHi;
2733 //ZZ HReg res = newVRegD(env);
2741 //ZZ HReg res = newVRegD(env);
2750 //ZZ HReg addr = newVRegI(env);
2751 //ZZ HReg res = newVRegD(env);
2765 //ZZ HReg rLo, rHi;
2766 //ZZ HReg res = newVRegD(env);
2773 //ZZ HReg res = newVRegD(env);
2774 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2775 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2781 //ZZ HReg res = newVRegD(env);
2782 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2783 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2789 //ZZ HReg res = newVRegD(env);
2790 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2791 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2799 //ZZ HReg rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2800 //ZZ HReg rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2801 //ZZ HReg res = newVRegD(env);
2810 //ZZ HReg res = newVRegD(env);
2811 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2812 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2826 //ZZ HReg res = newVRegD(env);
2827 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2828 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2835 //ZZ HReg res = newVRegD(env);
2836 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2837 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2844 //ZZ HReg res = newVRegD(env);
2845 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2846 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2860 //ZZ HReg rD = newVRegD(env);
2861 //ZZ HReg rM = newVRegD(env);
2862 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2863 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2886 //ZZ HReg rD = newVRegD(env);
2887 //ZZ HReg rM = newVRegD(env);
2888 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2889 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2910 //ZZ HReg rD = newVRegD(env);
2911 //ZZ HReg rM = newVRegD(env);
2912 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2913 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2933 //ZZ HReg res = newVRegD(env);
2934 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2935 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2952 //ZZ HReg res = newVRegD(env);
2953 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2954 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2971 //ZZ HReg res = newVRegD(env);
2972 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2973 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2987 //ZZ HReg res = newVRegD(env);
2988 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
2989 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
2999 //ZZ HReg res = newVRegD(env);
3000 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3001 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3018 //ZZ HReg res = newVRegD(env);
3019 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3020 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3036 //ZZ HReg res = newVRegD(env);
3037 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3038 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3053 //ZZ HReg res = newVRegD(env);
3054 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3055 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3070 //ZZ HReg res = newVRegD(env);
3071 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3072 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3087 //ZZ HReg res = newVRegD(env);
3088 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3089 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3104 //ZZ HReg res = newVRegD(env);
3105 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3106 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3107 //ZZ HReg argR2 = newVRegD(env);
3108 //ZZ HReg zero = newVRegD(env);
3128 //ZZ HReg res = newVRegD(env);
3129 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3130 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3146 //ZZ HReg res = newVRegD(env);
3147 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3148 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3149 //ZZ HReg argR2 = newVRegD(env);
3150 //ZZ HReg zero = newVRegD(env);
3168 //ZZ HReg res = newVRegD(env);
3169 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3170 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3186 //ZZ HReg res = newVRegD(env);
3187 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3188 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3205 //ZZ HReg res = newVRegD(env);
3206 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3207 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3224 //ZZ HReg res = newVRegD(env);
3225 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3248 //ZZ HReg res = newVRegD(env);
3249 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3272 //ZZ HReg res = newVRegD(env);
3273 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3296 //ZZ HReg res = newVRegD(env);
3297 //ZZ HReg tmp = newVRegD(env);
3298 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3299 //ZZ HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3300 //ZZ HReg argR2 = newVRegI(env);
3319 //ZZ HReg res = newVRegD(env);
3320 //ZZ HReg tmp = newVRegD(env);
3321 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3334 //ZZ HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3353 //ZZ HReg res = newVRegD(env);
3354 //ZZ HReg tmp = newVRegD(env);
3355 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3356 //ZZ HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3357 //ZZ HReg argR2 = newVRegI(env);
3375 //ZZ HReg res = newVRegD(env);
3376 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3377 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3392 //ZZ HReg res = newVRegD(env);
3393 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3394 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3409 //ZZ HReg res = newVRegD(env);
3410 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3411 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3426 //ZZ HReg res = newVRegD(env);
3427 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3428 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3441 //ZZ HReg res = newVRegD(env);
3442 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3443 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3451 //ZZ HReg res = newVRegD(env);
3452 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3453 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3467 //ZZ HReg res = newVRegD(env);
3468 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3469 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3484 //ZZ HReg res = newVRegD(env);
3485 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3486 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3499 //ZZ HReg res = newVRegD(env);
3500 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3501 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3510 //ZZ HReg res = newVRegD(env);
3511 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3512 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3527 //ZZ HReg res = newVRegD(env);
3528 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3529 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3544 //ZZ HReg res = newVRegD(env);
3545 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3546 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3561 //ZZ HReg res = newVRegD(env);
3562 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3563 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3576 //ZZ HReg res = newVRegD(env);
3577 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3578 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3584 //ZZ HReg res = newVRegD(env);
3585 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3586 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3593 //ZZ HReg res = newVRegD(env);
3594 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3595 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3601 //ZZ HReg res = newVRegD(env);
3602 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3603 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3609 //ZZ HReg res = newVRegD(env);
3610 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3611 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3617 //ZZ HReg res = newVRegD(env);
3618 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3619 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3625 //ZZ HReg res = newVRegD(env);
3626 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3627 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3633 //ZZ HReg res = newVRegD(env);
3634 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3635 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3641 //ZZ HReg res = newVRegD(env);
3642 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3643 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
3652 //ZZ HReg res = newVRegD(env);
3653 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Binop.arg1);
3679 //ZZ HReg res = newVRegD(env);
3680 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
3716 //ZZ HReg rLo = iselIntExpr_R(env, e->Iex.Unop.arg);
3717 //ZZ HReg rHi = newVRegI(env);
3718 //ZZ HReg res = newVRegD(env);
3726 //ZZ HReg rLo = iselIntExpr_R(env, e->Iex.Unop.arg);
3727 //ZZ HReg rHi = newVRegI(env);
3730 //ZZ HReg res = newVRegD(env);
3742 //ZZ HReg rLo, rHi;
3743 //ZZ HReg res = newVRegD(env);
3778 //ZZ HReg res = newVRegD(env);
3779 //ZZ HReg arg = iselNeon64Expr(env, mi.bindee[0]);
3783 //ZZ HReg res = newVRegD(env);
3784 //ZZ HReg arg = iselNeon64Expr(env, mi.bindee[0]);
3788 //ZZ HReg res = newVRegD(env);
3789 //ZZ HReg arg = iselNeon64Expr(env, mi.bindee[0]);
3793 //ZZ HReg res = newVRegD(env);
3794 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
3795 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
3800 //ZZ HReg res = newVRegD(env);
3801 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
3802 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
3807 //ZZ HReg res = newVRegD(env);
3808 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
3809 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
3814 //ZZ HReg res = newVRegD(env);
3815 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
3816 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
3821 //ZZ HReg res = newVRegD(env);
3822 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
3823 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
3828 //ZZ HReg res = newVRegD(env);
3829 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
3830 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
3835 //ZZ HReg res = newVRegD(env);
3836 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
3844 //ZZ HReg res, arg;
3927 //ZZ HReg res = newVRegD(env);
3928 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
3942 //ZZ HReg res = newVRegD(env);
3943 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
3957 //ZZ HReg res = newVRegD(env);
3958 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
3970 //ZZ HReg res = newVRegD(env);
3971 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
3978 //ZZ HReg x_lsh = newVRegD(env);
3979 //ZZ HReg x_rsh = newVRegD(env);
3980 //ZZ HReg lsh_amt = newVRegD(env);
3981 //ZZ HReg rsh_amt = newVRegD(env);
3982 //ZZ HReg zero = newVRegD(env);
3983 //ZZ HReg tmp = newVRegD(env);
3984 //ZZ HReg tmp2 = newVRegD(env);
3985 //ZZ HReg res = newVRegD(env);
3986 //ZZ HReg x = newVRegD(env);
3987 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4007 //ZZ HReg res = newVRegD(env);
4008 //ZZ HReg tmp = newVRegD(env);
4009 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4024 //ZZ HReg res = newVRegD(env);
4025 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4040 //ZZ HReg res = newVRegD(env);
4041 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4056 //ZZ HReg res = newVRegD(env);
4057 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4072 //ZZ HReg res = newVRegD(env);
4073 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4088 //ZZ HReg res = newVRegD(env);
4089 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4104 //ZZ HReg res = newVRegD(env);
4105 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4118 //ZZ HReg res = newVRegD(env);
4119 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4128 //ZZ HReg res = newVRegD(env);
4129 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4144 //ZZ HReg res = newVRegD(env);
4145 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4158 //ZZ HReg res = newVRegD(env);
4159 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4165 //ZZ HReg res = newVRegD(env);
4166 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4172 //ZZ HReg res = newVRegD(env);
4173 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4179 //ZZ HReg res = newVRegD(env);
4180 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4186 //ZZ HReg res = newVRegD(env);
4187 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4193 //ZZ HReg res = newVRegD(env);
4194 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
4200 //ZZ HReg res = newVRegD(env);
4201 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
4214 //ZZ HReg res = newVRegD(env);
4215 //ZZ HReg argL = iselNeon64Expr(env, mi.bindee[0]);
4216 //ZZ HReg argR = iselNeon64Expr(env, mi.bindee[1]);
4221 //ZZ HReg res = newVRegD(env);
4222 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4229 //ZZ HReg res = newVRegD(env);
4230 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4236 //ZZ HReg res = newVRegD(env);
4237 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4243 //ZZ HReg res = newVRegD(env);
4244 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4259 //ZZ HReg res = newVRegD(env);
4260 //ZZ HReg argL = iselNeon64Expr(env, triop->arg1);
4261 //ZZ HReg argR = iselNeon64Expr(env, triop->arg2);
4280 //ZZ HReg res = newVRegD(env);
4281 //ZZ HReg dreg = iselNeon64Expr(env, triop->arg1);
4282 //ZZ HReg arg = iselIntExpr_R(env, triop->arg3);
4310 //ZZ HReg rLo, rHi;
4311 //ZZ HReg res = newVRegD(env);
4326 static HReg iselV128Expr ( ISelEnv* env, IRExpr* e )
4328 HReg r = iselV128Expr_wrk( env, e );
4335 static HReg iselV128Expr_wrk ( ISelEnv* env, IRExpr* e )
4350 HReg res = newVRegV(env);
4359 HReg res = newVRegV(env);
4360 HReg rN = iselIntExpr_R(env, e->Iex.Load.addr);
4369 HReg addr = mk_baseblock_128bit_access_addr(env, offs);
4370 HReg res = newVRegV(env);
4390 HReg src = iselV128Expr(env, e->Iex.Unop.arg);
4391 HReg imm = newVRegV(env);
4392 HReg res = newVRegV(env);
4412 HReg res = newVRegV(env);
4413 HReg arg = iselV128Expr(env, e->Iex.Unop.arg);
4437 HReg arg = iselV128Expr(env, e->Iex.Unop.arg);
4438 HReg zero = newVRegV(env);
4439 HReg res = newVRegV(env);
4462 HReg res = newVRegV(env);
4463 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
4506 //ZZ HReg res = newVRegV(env);
4507 //ZZ HReg arg = iselNeonExpr(env, mi.bindee[0]);
4511 //ZZ HReg res = newVRegV(env);
4512 //ZZ HReg arg = iselNeonExpr(env, mi.bindee[0]);
4516 //ZZ HReg res = newVRegV(env);
4517 //ZZ HReg arg = iselNeonExpr(env, mi.bindee[0]);
4521 //ZZ HReg res = newVRegV(env);
4522 //ZZ HReg argL = iselNeonExpr(env, mi.bindee[0]);
4523 //ZZ HReg argR = iselNeonExpr(env, mi.bindee[1]);
4528 //ZZ HReg res = newVRegV(env);
4529 //ZZ HReg argL = iselNeonExpr(env, mi.bindee[0]);
4530 //ZZ HReg argR = iselNeonExpr(env, mi.bindee[1]);
4535 //ZZ HReg res = newVRegV(env);
4536 //ZZ HReg argL = iselNeonExpr(env, mi.bindee[0]);
4537 //ZZ HReg argR = iselNeonExpr(env, mi.bindee[1]);
4542 //ZZ HReg res = newVRegV(env);
4543 //ZZ HReg argL = iselNeonExpr(env, mi.bindee[0]);
4544 //ZZ HReg argR = iselNeonExpr(env, mi.bindee[1]);
4549 //ZZ HReg res = newVRegV(env);
4550 //ZZ HReg argL = iselNeonExpr(env, mi.bindee[0]);
4551 //ZZ HReg argR = iselNeonExpr(env, mi.bindee[1]);
4556 //ZZ HReg res = newVRegV(env);
4557 //ZZ HReg argL = iselNeonExpr(env, mi.bindee[0]);
4558 //ZZ HReg argR = iselNeonExpr(env, mi.bindee[1]);
4563 //ZZ HReg res = newVRegV(env);
4564 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4572 //ZZ HReg res, arg;
4655 //ZZ HReg res = newVRegV(env);
4656 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4670 //ZZ HReg res = newVRegV(env);
4671 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4685 //ZZ HReg res = newVRegV(env);
4686 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4698 //ZZ HReg res = newVRegV(env);
4699 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4706 //ZZ HReg x_lsh = newVRegV(env);
4707 //ZZ HReg x_rsh = newVRegV(env);
4708 //ZZ HReg lsh_amt = newVRegV(env);
4709 //ZZ HReg rsh_amt = newVRegV(env);
4710 //ZZ HReg zero = newVRegV(env);
4711 //ZZ HReg tmp = newVRegV(env);
4712 //ZZ HReg tmp2 = newVRegV(env);
4713 //ZZ HReg res = newVRegV(env);
4714 //ZZ HReg x = newVRegV(env);
4715 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4735 //ZZ HReg res = newVRegV(env);
4736 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4751 //ZZ HReg res = newVRegV(env);
4752 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4767 //ZZ HReg res = newVRegV(env);
4768 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4781 //ZZ HReg res = newVRegV(env);
4782 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4790 //ZZ HReg res = newVRegV(env);
4791 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4805 //ZZ HReg res = newVRegV(env);
4806 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4818 //ZZ HReg res = newVRegV(env);
4819 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4825 //ZZ HReg res = newVRegV(env);
4826 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4832 //ZZ HReg res = newVRegV(env);
4833 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4839 //ZZ HReg res = newVRegV(env);
4840 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
4846 //ZZ HReg res = newVRegV(env);
4847 //ZZ HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
4853 //ZZ HReg res = newVRegV(env);
4854 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Unop.arg);
4860 //ZZ HReg res = newVRegV(env);
4861 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Unop.arg);
4867 //ZZ HReg res = newVRegV(env);
4868 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Unop.arg);
4874 //ZZ HReg res = newVRegV(env);
4875 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Unop.arg);
4889 HReg res = newVRegV(env);
4890 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
4891 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
4896 //ZZ HReg res = newVRegV(env);
4897 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
4898 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
4904 //ZZ HReg res = newVRegV(env);
4905 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
4906 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
4912 //ZZ HReg res = newVRegV(env);
4913 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
4914 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
4968 HReg res = newVRegV(env);
4969 HReg argL = iselV128Expr(env, e->Iex.Binop.arg1);
4970 HReg argR = iselV128Expr(env, e->Iex.Binop.arg2);
5029 //ZZ HReg res = newVRegV(env);
5030 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5031 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5038 //ZZ HReg res = newVRegV(env);
5039 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5040 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5047 //ZZ HReg res = newVRegV(env);
5048 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5049 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5063 //ZZ HReg rD = newVRegV(env);
5064 //ZZ HReg rM = newVRegV(env);
5065 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5066 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5091 //ZZ HReg rD = newVRegV(env);
5092 //ZZ HReg rM = newVRegV(env);
5093 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5094 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5119 //ZZ HReg rD = newVRegV(env);
5120 //ZZ HReg rM = newVRegV(env);
5121 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5122 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5144 //ZZ HReg res = newVRegV(env);
5145 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5146 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5165 //ZZ HReg res = newVRegV(env);
5166 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5167 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5186 //ZZ HReg res = newVRegV(env);
5187 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5188 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5204 //ZZ HReg res = newVRegV(env);
5205 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5206 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5216 //ZZ HReg res = newVRegV(env);
5217 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5218 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5237 //ZZ HReg res = newVRegV(env);
5238 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5239 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5257 //ZZ HReg res = newVRegV(env);
5258 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5259 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5274 //ZZ HReg res = newVRegV(env);
5275 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5276 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5291 //ZZ HReg res = newVRegV(env);
5292 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5293 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5308 //ZZ HReg res = newVRegV(env);
5309 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5310 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5326 //ZZ HReg res = newVRegV(env);
5327 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5328 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5329 //ZZ HReg argR2 = newVRegV(env);
5330 //ZZ HReg zero = newVRegV(env);
5350 //ZZ HReg res = newVRegV(env);
5351 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5352 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5369 //ZZ HReg res = newVRegV(env);
5370 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5371 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5372 //ZZ HReg argR2 = newVRegV(env);
5373 //ZZ HReg zero = newVRegV(env);
5393 //ZZ HReg res = newVRegV(env);
5394 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5395 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5412 //ZZ HReg res = newVRegV(env);
5413 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5414 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5431 //ZZ HReg res = newVRegV(env);
5432 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5433 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5450 //ZZ HReg res = newVRegV(env);
5451 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5474 //ZZ HReg res = newVRegV(env);
5475 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5498 //ZZ HReg res = newVRegV(env);
5499 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5566 HReg src = iselV128Expr(env, argL);
5567 HReg dst = newVRegV(env);
5582 //ZZ HReg res = newVRegV(env);
5583 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5584 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5599 //ZZ HReg res = newVRegV(env);
5600 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5601 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5616 //ZZ HReg res = newVRegV(env);
5617 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5618 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5633 //ZZ HReg res = newVRegV(env);
5634 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5635 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5648 //ZZ HReg res = newVRegV(env);
5649 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5650 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5659 HReg res = newVRegV(env);
5660 HReg argL = iselDblExpr(env, e->Iex.Binop.arg1);
5661 HReg argR = iselDblExpr(env, e->Iex.Binop.arg2);
5678 //ZZ HReg res = newVRegV(env);
5679 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
5680 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
5695 //ZZ HReg res = newVRegV(env);
5696 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5697 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5711 //ZZ HReg res = newVRegV(env);
5712 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5713 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5727 //ZZ HReg res = newVRegV(env);
5728 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
5729 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
5741 //ZZ HReg res = newVRegV(env);
5742 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5743 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5750 //ZZ HReg res = newVRegV(env);
5751 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5752 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5758 //ZZ HReg res = newVRegV(env);
5759 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5760 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5766 //ZZ HReg res = newVRegV(env);
5767 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5768 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5774 //ZZ HReg res = newVRegV(env);
5775 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5776 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5782 //ZZ HReg res = newVRegV(env);
5783 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5784 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5790 //ZZ HReg res = newVRegV(env);
5791 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5792 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5798 //ZZ HReg res = newVRegV(env);
5799 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5800 //ZZ HReg
5807 //ZZ HReg res = newVRegV(env);
5808 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
5809 //ZZ HReg argR = iselNeon64Expr(env, e->Iex.Binop.arg2);
5819 //ZZ HReg res = newVRegV(env);
5820 //ZZ HReg arg = iselNeonExpr(env, e->Iex.Binop.arg1);
5846 //ZZ HReg res = newVRegV(env);
5847 //ZZ HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
5874 //ZZ HReg res = newVRegV(env);
5875 //ZZ HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
5876 //ZZ HReg argR = iselNeonExpr(env, e->Iex.Binop.arg2);
5909 HReg argL = iselV128Expr(env, triop->arg2);
5910 HReg argR = iselV128Expr(env, triop->arg3);
5911 HReg dst = newVRegV(env);
5919 //ZZ HReg res = newVRegV(env);
5920 //ZZ HReg argL = iselNeonExpr(env, triop->arg1);
5921 //ZZ HReg argR = iselNeonExpr(env, triop->arg2);
5944 //ZZ HReg r1 = iselNeonExpr(env, e->Iex.ITE.iftrue);
5945 //ZZ HReg r0 = iselNeonExpr(env, e->Iex.ITE.iffalse);
5946 //ZZ HReg dst = newVRegV(env);
5968 static HReg iselDblExpr ( ISelEnv* env, IRExpr* e )
5970 HReg r = iselDblExpr_wrk( env, e );
5980 static HReg iselDblExpr_wrk ( ISelEnv* env, IRExpr* e )
5993 HReg src = newVRegI(env);
5994 HReg dst = newVRegD(env);
6003 HReg addr = iselIntExpr_R(env, e->Iex.Load.addr);
6004 HReg res = newVRegD(env);
6012 HReg rD = newVRegD(env);
6013 HReg rN = get_baseblock_register();
6025 //ZZ HReg srcHi, srcLo;
6026 //ZZ HReg dst = newVRegD(env);
6033 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
6034 HReg dst = newVRegD(env);
6039 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
6040 HReg dst = newVRegD(env);
6045 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
6046 HReg dst = newVRegD(env);
6055 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
6056 HReg dst = newVRegD(env);
6070 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
6071 HReg dst = newVRegD(env);
6077 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
6078 HReg dst = newVRegD(env);
6087 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
6089 HReg dstS = newVRegD(env);
6109 HReg argL = iselDblExpr(env, triop->arg2);
6110 HReg argR = iselDblExpr(env, triop->arg3);
6111 HReg dst = newVRegD(env);
6121 //ZZ HReg r1 = iselDblExpr(env, e->Iex.ITE.iftrue);
6122 //ZZ HReg r0 = iselDblExpr(env, e->Iex.ITE.iffalse);
6123 //ZZ HReg dst = newVRegD(env);
6146 static HReg iselFltExpr ( ISelEnv* env, IRExpr* e )
6148 HReg r = iselFltExpr_wrk( env, e );
6158 static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
6175 HReg src = newVRegI(env);
6176 HReg dst = newVRegD(env);
6185 //ZZ HReg res = newVRegF(env);
6195 HReg rD = newVRegD(env);
6196 HReg rN = get_baseblock_register();
6205 //ZZ HReg dst = newVRegF(env);
6206 //ZZ HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
6211 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
6212 HReg dst = newVRegD(env);
6217 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
6218 HReg dst = newVRegD(env);
6230 HReg src = iselFltExpr(env, e->Iex.Binop.arg2);
6231 HReg dst = newVRegD(env);
6237 HReg src = iselFltExpr(env, e->Iex.Binop.arg2);
6238 HReg dst = newVRegD(env);
6244 HReg srcD = iselDblExpr(env, e->Iex.Binop.arg2);
6246 HReg dstS = newVRegD(env);
6262 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
6264 HReg dstS = newVRegD(env);
6284 HReg argL = iselFltExpr(env, triop->arg2);
6285 HReg argR = iselFltExpr(env, triop->arg3);
6286 HReg dst = newVRegD(env);
6298 //ZZ HReg r1 = iselFltExpr(env, e->Iex.ITE.iftrue);
6299 //ZZ HReg r0 = iselFltExpr(env, e->Iex.ITE.iffalse);
6300 //ZZ HReg dst = newVRegF(env);
6337 HReg rD = iselIntExpr_R(env, stmt->Ist.Store.data);
6343 HReg rD = iselIntExpr_R(env, stmt->Ist.Store.data);
6349 HReg rD = iselIntExpr_R(env, stmt->Ist.Store.data);
6355 HReg rD = iselIntExpr_R(env, stmt->Ist.Store.data);
6361 HReg qD = iselV128Expr(env, stmt->Ist.Store.data);
6362 HReg addr = iselIntExpr_R(env, stmt->Ist.Store.addr);
6367 HReg dD = iselDblExpr(env, stmt->Ist.Store.data);
6368 HReg addr = iselIntExpr_R(env, stmt->Ist.Store.addr);
6373 HReg sD = iselFltExpr(env, stmt->Ist.Store.data);
6374 HReg addr = iselIntExpr_R(env, stmt->Ist.Store.addr);
6380 //ZZ HReg rD = iselIntExpr_R(env, stmt->Ist.Store.data);
6388 //ZZ HReg rD = iselIntExpr_R(env, stmt->Ist.Store.data);
6395 //ZZ HReg dD = iselNeon64Expr(env, stmt->Ist.Store.data);
6399 //ZZ HReg rDhi, rDlo, rA;
6410 //ZZ HReg dD = iselDblExpr(env, stmt->Ist.Store.data);
6416 //ZZ HReg fD = iselFltExpr(env, stmt->Ist.Store.data);
6422 //ZZ HReg qD = iselNeonExpr(env, stmt->Ist.Store.data);
6445 //ZZ HReg rD = iselIntExpr_R(env, sg->data);
6453 //ZZ HReg rD = iselIntExpr_R(env, sg->data);
6480 //ZZ HReg rAlt = iselIntExpr_R(env, lg->alt);
6482 //ZZ HReg rD = lookupIRTemp(env, lg->dst);
6493 //ZZ HReg rAlt = iselIntExpr_R(env, lg->alt);
6495 //ZZ HReg rD = lookupIRTemp(env, lg->dst);
6519 HReg rD = iselIntExpr_R(env, stmt->Ist.Put.data);
6525 HReg rD = iselIntExpr_R(env, stmt->Ist.Put.data);
6531 HReg rD = iselIntExpr_R(env, stmt->Ist.Put.data);
6537 HReg rD = iselIntExpr_R(env, stmt->Ist.Put.data);
6543 HReg qD = iselV128Expr(env, stmt->Ist.Put.data);
6544 HReg addr = mk_baseblock_128bit_access_addr(env, offs);
6549 HReg dD = iselDblExpr(env, stmt->Ist.Put.data);
6550 HReg bbp = get_baseblock_register();
6555 HReg dD = iselFltExpr(env, stmt->Ist.Put.data);
6556 HReg bbp = get_baseblock_register();
6563 //ZZ HReg addr = newVRegI(env);
6564 //ZZ HReg qD = iselNeon64Expr(env, stmt->Ist.Put.data);
6569 //ZZ HReg rDhi, rDlo;
6586 //ZZ HReg rD = iselDblExpr(env, stmt->Ist.Put.data);
6594 //ZZ HReg rD = iselFltExpr(env, stmt->Ist.Put.data);
6609 HReg dst = lookupIRTemp(env, tmp);
6610 HReg rD = iselIntExpr_R(env, stmt->Ist.WrTmp.data);
6625 HReg zero = newVRegI(env);
6626 HReg one = newVRegI(env);
6627 HReg dst = lookupIRTemp(env, tmp);
6635 HReg src = iselDblExpr(env, stmt->Ist.WrTmp.data);
6636 HReg dst = lookupIRTemp(env, tmp);
6641 HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data);
6642 HReg dst = lookupIRTemp(env, tmp);
6647 HReg src = iselV128Expr(env, stmt->Ist.WrTmp.data);
6648 HReg dst = lookupIRTemp(env, tmp);
6699 HReg dst = lookupIRTemp(env, d->tmp);
6712 HReg dst = lookupIRTemp(env, d->tmp);
6713 HReg tmp = newVRegI(env); // the address of the returned value
6738 HReg r_dst = lookupIRTemp(env, res);
6739 HReg raddr = iselIntExpr_R(env, stmt->Ist.LLSC.addr);
6759 HReg rD = iselIntExpr_R(env, stmt->Ist.LLSC.storedata);
6760 HReg rA = iselIntExpr_R(env, stmt->Ist.LLSC.addr);
6779 HReg r_res = lookupIRTemp(env, res);
6843 HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
6859 //ZZ HReg r = iselIntExpr_R(env, IRExpr_Const(stmt->Ist.Exit.dst));
6916 HReg r = iselIntExpr_R(env, next);
6927 HReg r = iselIntExpr_R(env, next);
6952 HReg r = iselIntExpr_R(env, next);
6987 HReg hreg, hregHI;
7008 /* Make up an IRTemp -> virtual HReg mapping. This doesn't
7011 env->vregmap = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
7012 env->vregmapHI = LibVEX_Alloc(env->n_vregmap * sizeof(HReg));
7024 hregHI = hreg = INVALID_HREG;
7028 hreg = mkHReg(j++, HRcInt64, True);
7031 hreg = mkHReg(j++, HRcInt64, True);
7036 hreg = mkHReg(j++, HRcFlt64, True);
7039 hreg = mkHReg(j++, HRcVec128, True);
7045 env->vregmap[i] = hreg;