Home | History | Annotate | Download | only in priv

Lines Matching defs:assign

636 static void assign ( IRTemp dst, IRExpr* e )
763 assign(expTmp, expVal);
1135 assign( oldc, binop(Iop_And32,
1139 assign( oldcn, narrowTo(ty, mkexpr(oldc)) );
1141 assign( tres, binop(plus,
1189 assign( oldc, binop(Iop_And32,
1193 assign( oldcn, narrowTo(ty, mkexpr(oldc)) );
1195 assign( tres, binop(minus,
1421 assign( seg_selector, unop(Iop_16Uto32, getSReg(sreg)) );
1422 assign( ldt_ptr, IRExpr_Get( OFFB_LDT, hWordTy ));
1423 assign( gdt_ptr, IRExpr_Get( OFFB_GDT, hWordTy ));
1430 assign(
1472 assign( tmp, addr32 );
1831 assign( dst0, getIReg(size,gregOfRM(rm)) );
1832 assign( src, getIReg(size,eregOfRM(rm)) );
1844 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
1860 assign( dst0, getIReg(size,gregOfRM(rm)) );
1861 assign( src, loadLE(szToITy(size), mkexpr(addr)) );
1873 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
1944 assign(dst0, getIReg(size,eregOfRM(rm)));
1945 assign(src, getIReg(size,gregOfRM(rm)));
1957 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
1975 assign(dst0, loadLE(ty,mkexpr(addr)));
1976 assign(src, getIReg(size,gregOfRM(rm)));
2000 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2127 assign(dst0, getIReg(size,R_EAX));
2128 assign(src, mkU(ty,lit));
2131 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2137 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2219 assign( src64, binop(Iop_32HLto64,
2221 assign( dst64, binop(op, mkexpr(src64), mkexpr(t)) );
2228 assign( src64, unop(widen3264,
2231 assign( dst64, binop(op, mkexpr(src64), unop(widen1632,mkexpr(t))) );
2240 assign( src64, unop(widen3264, unop(widen1632, getIReg(2,R_EAX))) );
2241 assign( dst64,
2283 assign(dst0, getIReg(sz,eregOfRM(modrm)));
2284 assign(src, mkU(ty,d32 & mask));
2294 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2310 assign(dst0, loadLE(ty,mkexpr(addr)));
2311 assign(src, mkU(ty,d32 & mask));
2335 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2383 assign(dst0, getIReg(sz, eregOfRM(modrm)));
2387 assign(dst0, loadLE(ty,mkexpr(addr)));
2420 assign( r64, mkIRExprCCall(
2429 assign( dst1, narrowTo(ty, unop(Iop_64to32, mkexpr(r64))) );
2465 assign( shift_amt, binop(Iop_And8, shift_expr, mkU8(31)) );
2468 assign( pre32, op32==Iop_Sar32 ? widenSto32(mkexpr(dst0))
2472 assign( res32, binop(op32, mkexpr(pre32), mkexpr(shift_amt)) );
2475 assign( res32ss,
2487 assign( dst1, narrowTo(ty, mkexpr(res32)) );
2503 assign(rot_amt32, binop(Iop_And8, shift_expr, mkU8(31)));
2506 assign(rot_amt, mkexpr(rot_amt32));
2508 assign(rot_amt, binop(Iop_And8, mkexpr(rot_amt32), mkU8(8*sz-1)));
2513 assign(dst1,
2530 assign(dst1,
2550 assign(oldFlags, mk_x86g_calculate_eflags_all());
2646 assign( t2, widenUto32(getIReg(sz, eregOfRM(modrm))) );
2654 assign( t2, widenUto32(loadLE(ty, mkexpr(t_addr))) );
2664 assign( t2m, binop(Iop_Or32, mkU32(mask), mkexpr(t2)) );
2667 assign( t2m, binop(Iop_And32, mkU32(mask), mkexpr(t2)) );
2670 assign( t2m, binop(Iop_Xor32, mkU32(mask), mkexpr(t2)) );
2723 assign( t1, getIReg(sz, R_EAX) );
2733 assign( res64, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
2734 assign( resHi, unop(Iop_64HIto32,mkexpr(res64)));
2735 assign( resLo, unop(Iop_64to32,mkexpr(res64)));
2747 assign( res32, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
2748 assign( resHi, unop(Iop_32HIto16,mkexpr(res32)));
2749 assign( resLo, unop(Iop_32to16,mkexpr(res32)));
2761 assign( res16, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
2762 assign( resHi, unop(Iop_16HIto8,mkexpr(res16)));
2763 assign( resLo, unop(Iop_16to8,mkexpr(res16)));
2802 assign(dst1, binop(mkSizedOp(ty,Iop_And8),
2829 assign(dst0, mkU(ty,0));
2830 assign(src, getIReg(sz,eregOfRM(modrm)));
2831 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8), mkexpr(dst0), mkexpr(src)));
2839 assign(src, getIReg(sz,eregOfRM(modrm)));
2845 assign(src, getIReg(sz,eregOfRM(modrm)));
2850 assign( t1, getIReg(sz, eregOfRM(modrm)) );
2856 assign( t1, getIReg(sz, eregOfRM(modrm)) );
2868 assign(t1, loadLE(ty,mkexpr(addr)));
2873 assign(dst1, binop(mkSizedOp(ty,Iop_And8),
2885 assign(dst1, unop(mkSizedOp(ty,Iop_Not8), mkexpr(t1)));
2898 assign(dst0, mkU(ty,0));
2899 assign(src, mkexpr(t1));
2900 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8),
2956 assign(t1, getIReg(1, eregOfRM(modrm)));
2959 assign(t2, binop(Iop_Add8, mkexpr(t1), mkU8(1)));
2964 assign(t2, binop(Iop_Sub8, mkexpr(t1), mkU8(1)));
2977 assign( t1, loadLE(ty, mkexpr(addr)) );
2980 assign(t2, binop(Iop_Add8, mkexpr(t1), mkU8(1)));
2990 assign(t2, binop(Iop_Sub8, mkexpr(t1), mkU8(1)));
3034 assign(t1, getIReg(sz,eregOfRM(modrm)));
3039 assign(t2, binop(mkSizedOp(ty,Iop_Add8),
3047 assign(t2, binop(mkSizedOp(ty,Iop_Sub8),
3055 assign(t2, binop(Iop_Sub32, getIReg(4,R_ESP), mkU32(4)));
3069 assign( t2, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
3082 assign(t1, loadLE(ty,mkexpr(addr)));
3086 assign(t2, binop(mkSizedOp(ty,Iop_Add8),
3098 assign(t2, binop(mkSizedOp(ty,Iop_Sub8),
3111 assign(t2, binop(Iop_Sub32, getIReg(4,R_ESP), mkU32(4)));
3125 assign( t2, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
3150 assign( t_inc,
3154 assign( t_inc,
3177 assign( td, getIReg(4, R_EDI) );
3178 assign( ts, getIReg(4, R_ESI) );
3192 assign( ts, getIReg(4, R_ESI) );
3206 assign( ta, getIReg(sz, R_EAX) );
3207 assign( td, getIReg(4, R_EDI) );
3223 assign( td, getIReg(4, R_EDI) );
3224 assign( ts, getIReg(4, R_ESI) );
3226 assign( tdv, loadLE(ty,mkexpr(td)) );
3227 assign( tsv, loadLE(ty,mkexpr(ts)) );
3243 assign( ta, getIReg(sz, R_EAX) );
3244 assign( td, getIReg(4, R_EDI) );
3246 assign( tdv, loadLE(ty,mkexpr(td)) );
3264 assign( tc, getIReg(4,R_ECX) );
3305 assign( tg, getIReg(size, gregOfRM(rm)) );
3307 assign( te, getIReg(size, eregOfRM(rm)) );
3310 assign( te, loadLE(ty,mkexpr(addr)) );
3315 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tg) ) );
3350 assign(te, getIReg(size, eregOfRM(rm)));
3354 assign(te, loadLE(ty, mkexpr(addr)));
3363 assign(tl, mkU(ty,d32));
3365 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tl) ));
3388 assign(src32, widenUto32( mkexpr(src) ));
3391 assign(src32x,
3398 assign(res32,
3407 assign(res, narrowTo(ty, mkexpr(res32)));
3983 assign( t64, mkIRExprCCall(
3995 assign( ew, unop(Iop_64HIto32, mkexpr(t64) ) );
4082 assign(t1, get_ST(r_src));
4092 assign(t1, get_ST(0));
4093 assign(t2, get_ST(r_src));
4242 assign( argF, get_ST(0) );
4243 assign( argI, unop(Iop_ReinterpF64asI64, mkexpr(argF)));
4244 assign( sigI,
4252 assign( expI,
4260 assign( sigF, unop(Iop_ReinterpI64asF64, mkexpr(sigI)) );
4261 assign( expF, unop(Iop_ReinterpI64asF64, mkexpr(expI)) );
4276 assign( a1, get_ST(0) );
4277 assign( a2, get_ST(1) );
4302 assign( a1, get_ST(0) );
4303 assign( a2, get_ST(1) );
4337 assign( a1, get_ST(0) );
5323 assign(t16, get_FPU_sw());
5540 assign(res, binop(op, argL, argR));
5544 assign( res,
5581 assign( amt, unop(Iop_64to32, getMMXReg(eregOfRM(rm))) );
5588 assign( amt, loadLE(Ity_I32, mkexpr(addr)) );
5594 assign( g0, getMMXReg(gregOfRM(rm)) );
5595 assign( amt8, unop(Iop_32to8, mkexpr(amt)) );
5612 assign(
5622 assign(
5660 assign( e0, getMMXReg(eregOfRM(rm)) );
5677 assign( e1, amt >= size
5683 assign( e1, amt >= size
6003 assign( addr, handleSegOverride( sorb, getIReg(4, R_EDI) ));
6004 assign( regM, getMMXReg( eregOfRM(modrm) ));
6005 assign( regD, getMMXReg( gregOfRM(modrm) ));
6006 assign( mask, binop(Iop_SarN8x8, mkexpr(regM), mkU8(7)) );
6007 assign( olddata, loadLE( Ity_I64, mkexpr(addr) ));
6008 assign( newdata,
6084 assign( gsrc, getIReg(sz, gregOfRM(modrm)) );
6088 assign( esrc, getIReg(sz, eregOfRM(modrm)) );
6096 assign( esrc, loadLE(ty, mkexpr(addr)) );
6127 assign( tmpSH, binop(Iop_And8, shift_amt, mask) );
6130 assign( tmpL, binop(mkpair, mkexpr(esrc), mkexpr(gsrc)) );
6132 assign( tmpL, binop(mkpair, mkexpr(gsrc), mkexpr(esrc)) );
6134 assign( tmpRes, unop(getres, binop(shift, mkexpr(tmpL), mkexpr(tmpSH)) ) );
6135 assign( tmpSubSh,
6200 assign( t_bitno0, widenSto32(getIReg(sz, gregOfRM(modrm))) );
6213 assign( t_esp, binop(Iop_Sub32, getIReg(4, R_ESP), mkU32(128)) );
6219 assign( t_addr0, mkexpr(t_esp) );
6223 assign( t_bitno1, binop(Iop_And32,
6230 assign( t_bitno1, mkexpr(t_bitno0) );
6239 assign( t_addr1,
6246 assign( t_bitno2,
6254 assign( t_mask, binop(Iop_Shl8, mkU8(1), mkexpr(t_bitno2)) );
6259 assign( t_fetched, loadLE(Ity_I8, mkexpr(t_addr1)) );
6264 assign( t_new,
6268 assign( t_new,
6272 assign( t_new,
6343 assign( src, getIReg(sz, eregOfRM(modrm)) );
6348 assign( src, loadLE(ty, mkexpr(addr)) );
6358 assign( src8,
6398 assign( src32, unop(Iop_16Uto32, mkexpr(src)) );
6400 assign( src32, mkexpr(src) );
6403 assign( dst32,
6417 assign( dst, unop(Iop_32to16, mkexpr(dst32)) );
6419 assign( dst, mkexpr(dst32) );
6435 assign( t1, getIReg(sz, R_EAX) );
6436 assign( t2, getIReg(sz, reg) );
6455 assign( oldflags, mk_x86g_calculate_eflags_all() );
6484 assign( flags, mk_x86g_calculate_eflags_all() );
6529 assign( dest, getIReg(size, eregOfRM(rm)) );
6531 assign( src, getIReg(size, gregOfRM(rm)) );
6532 assign( acc, getIReg(size, R_EAX) );
6534 assign( cond8, unop(Iop_1Uto8, mk_x86g_calculate_condition(X86CondZ)) );
6535 assign( dest2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(src)) );
6536 assign( acc2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(acc)) );
6546 assign( dest, loadLE(ty, mkexpr(addr)) );
6548 assign( src, getIReg(size, gregOfRM(rm)) );
6549 assign( acc, getIReg(size, R_EAX) );
6551 assign( cond8, unop(Iop_1Uto8, mk_x86g_calculate_condition(X86CondZ)) );
6552 assign( dest2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(src)) );
6553 assign( acc2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(acc)) );
6567 assign( src, getIReg(size, gregOfRM(rm)) );
6568 assign( acc, getIReg(size, R_EAX) );
6574 assign( cond8, unop(Iop_1Uto8, mk_x86g_calculate_condition(X86CondZ)) );
6575 assign( acc2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(acc)) );
6618 assign( tmps, getIReg(sz, eregOfRM(rm)) );
6619 assign( tmpd, getIReg(sz, gregOfRM(rm)) );
6637 assign( tmps, loadLE(ty, mkexpr(addr)) );
6638 assign( tmpd, getIReg(sz, gregOfRM(rm)) );
6682 assign( tmpd, getIReg(sz, eregOfRM(rm)));
6683 assign( tmpt0, getIReg(sz, gregOfRM(rm)) );
6684 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
6698 assign( tmpd, loadLE(ty, mkexpr(addr)) );
6699 assign( tmpt0, getIReg(sz, gregOfRM(rm)) );
6700 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
6713 assign( tmpd, loadLE(ty, mkexpr(addr)) );
6714 assign( tmpt0, getIReg(sz, gregOfRM(rm)) );
6715 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
6791 assign( t1, getSReg(sreg) );
6792 assign( ta, binop(Iop_Sub32, getIReg(4, R_ESP), mkU32(sz)) );
6806 assign( ta, getIReg(4, R_ESP) );
6807 assign( t1, loadLE(Ity_I16, mkexpr(ta)) );
6818 assign(t1, getIReg(4,R_ESP));
6819 assign(t2, loadLE(Ity_I32,mkexpr(t1)));
6907 assign( epart, unop( Iop_32UtoV128,
6942 assign( epart, unop( Iop_64UtoV128,
7000 assign( oldG0, getXMMReg(gregOfRM(rm)) );
7003 assign( oldG1,
7014 assign( oldG1,
7043 assign( oldG0, getXMMReg(gregOfRM(rm)) );
7046 assign( oldG1,
7057 assign( oldG1,
7176 assign( plain, binop(op, getXMMReg(gregOfRM(rm)),
7187 assign( plain,
7237 assign( amt, getXMMRegLane32(eregOfRM(rm), 0) );
7244 assign( amt, loadLE(Ity_I32, mkexpr(addr)) );
7250 assign( g0, getXMMReg(gregOfRM(rm)) );
7251 assign( amt8, unop(Iop_32to8, mkexpr(amt)) );
7268 assign(
7278 assign(
7314 assign( e0, getXMMReg(eregOfRM(rm)) );
7331 assign( e1, amt >= size
7337 assign( e1, amt >= size
7375 assign( hi64, unop(Iop_V128HIto64, mkexpr(t128)) );
7376 assign( lo64, unop(Iop_V128to64, mkexpr(t128)) );
7387 assign( *t0, unop(Iop_64to32, mkexpr(lo64)) );
7388 assign( *t1, unop(Iop_64HIto32, mkexpr(lo64)) );
7389 assign( *t2, unop(Iop_64to32, mkexpr(hi64)) );
7390 assign( *t3, unop(Iop_64HIto32, mkexpr(hi64)) );
7414 assign( hi32, unop(Iop_64HIto32, mkexpr(t64)) );
7415 assign( lo32, unop(Iop_64to32, mkexpr(t64)) );
7426 assign( *t0, unop(Iop_32to16, mkexpr(lo32)) );
7427 assign( *t1, unop(Iop_32HIto16, mkexpr(lo32)) );
7428 assign( *t2, unop(Iop_32to16, mkexpr(hi32)) );
7429 assign( *t3, unop(Iop_32HIto16, mkexpr(hi32)) );
7550 assign(aa, aax);
7551 assign(bb, bbx);
7552 assign( aahi32s,
7556 assign( aalo32s,
7560 assign( bbhi32s,
7564 assign( bblo32s,
7568 assign(one32x2, mkU64( (1ULL << 32) + 1 ));
7569 assign(
7585 assign(
7630 assign( aa, aax );
7631 assign( bb, bbx );
7632 assign( zero, mkU64(0) );
7633 assign( bbNeg, binop(opSub, mkexpr(zero), mkexpr(bb)) );
7634 assign( negMask, binop(opCmpGTS, mkexpr(zero), mkexpr(aa)) );
7635 assign( posMask, binop(opCmpGTS, mkexpr(aa), mkexpr(zero)) );
7670 assign( aa, aax );
7671 assign( negMask, binop(opSarN, mkexpr(aa), mkU8(8*laneszB-1)) );
7672 assign( posMask, unop(Iop_Not64, mkexpr(negMask)) );
7673 assign( zero, mkU64(0) );
7674 assign( aaNeg, binop(opSub, mkexpr(zero), mkexpr(aa)) );
7952 assign(t1, getIReg(4,R_EAX));
7954 assign(t2, binop(Iop_Sub32, getIReg(4,R_ESP), mkU32(4)));
8287 assign( argR, getXMMRegLane32F( eregOfRM(modrm), 0/*lowest lane*/ ) );
8293 assign( argR, loadLE(Ity_F32, mkexpr(addr)) );
8298 assign( argL, getXMMRegLane32F( gregOfRM(modrm), 0/*lowest lane*/ ) );
8326 assign( arg64, getMMXReg(eregOfRM(modrm)) );
8332 assign( arg64, loadLE(Ity_I64, mkexpr(addr)) );
8338 assign( rmode, get_sse_roundingmode() );
8366 assign( arg32, getIReg(4, eregOfRM(modrm)) );
8372 assign( arg32, loadLE(Ity_I32, mkexpr(addr)) );
8378 assign( rmode, get_sse_roundingmode() );
8405 assign(f32lo, getXMMRegLane32F(eregOfRM(modrm), 0));
8406 assign(f32hi, getXMMRegLane32F(eregOfRM(modrm), 1));
8412 assign(f32lo, loadLE(Ity_F32, mkexpr(addr)));
8413 assign(f32hi, loadLE(Ity_F32, binop( Iop_Add32,
8423 assign(rmode, mkU32((UInt)Irrm_ZERO) );
8425 assign( rmode, get_sse_roundingmode() );
8428 assign(
8458 assign(f32lo, getXMMRegLane32F(eregOfRM(modrm), 0));
8464 assign(f32lo, loadLE(Ity_F32, mkexpr(addr)));
8472 assign( rmode, mkU32((UInt)Irrm_ZERO) );
8474 assign( rmode, get_sse_roundingmode() );
8522 assign( t64, mkIRExprCCall(
8531 assign( ew, unop(Iop_64HIto32, mkexpr(t64) ) );
8711 assign( t0, binop( Iop_And32,
8714 assign( t1, binop( Iop_And32,
8717 assign( t2, binop( Iop_And32,
8720 assign( t3, binop( Iop_And32,
8864 assign(sV, getMMXReg(eregOfRM(modrm)));
8867 case 0: assign(t5, mkexpr(t0)); break;
8868 case 1: assign(t5, mkexpr(t1)); break;
8869 case 2: assign(t5, mkexpr(t2)); break;
8870 case 3: assign(t5, mkexpr(t3)); break;
8897 assign(t5, getMMXReg(gregOfRM(modrm)));
8901 assign(t4, getIReg(2, eregOfRM(modrm)));
8911 assign(t4, loadLE(Ity_I16, mkexpr(addr)));
8918 case 0: assign(t6, mk64from16s(t3,t2,t1,t4)); break;
8919 case 1: assign(t6, mk64from16s(t3,t2,t4,t0)); break;
8920 case 2: assign(t6, mk64from16s(t3,t4,t1,t0)); break;
8921 case 3: assign(t6, mk64from16s(t4,t2,t1,t0)); break;
8974 assign(t0, getMMXReg(eregOfRM(modrm)));
8975 assign(t1, mkIRExprCCall(
9068 assign( sV, getMMXReg(eregOfRM(modrm)) );
9076 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
9087 assign(dV,
9149 assign( dV, getXMMReg(gregOfRM(modrm)) );
9152 assign( sV, getXMMReg(eregOfRM(modrm)) );
9160 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
9250 assign( dV, getXMMReg(gregOfRM(modrm)) );
9253 assign( sV, getXMMReg(eregOfRM(modrm)) );
9260 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
9345 assign( argR, getXMMRegLane64F( eregOfRM(modrm), 0/*lowest lane*/ ) );
9351 assign( argR, loadLE(Ity_F64, mkexpr(addr)) );
9356 assign( argL, getXMMRegLane64F( gregOfRM(modrm), 0/*lowest lane*/ ) );
9380 assign( arg64, getXMMRegLane64(eregOfRM(modrm), 0) );
9386 assign( arg64, loadLE(Ity_I64, mkexpr(addr)) );
9413 assign( argV, getXMMReg(eregOfRM(modrm)) );
9419 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9425 assign( rmode, get_sse_roundingmode() );
9451 assign( argV, getXMMReg(eregOfRM(modrm)) );
9457 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9463 assign( rmode, get_sse_roundingmode() );
9466 assign( t0, unop(Iop_ReinterpI64asF64,
9468 assign( t1, unop(Iop_ReinterpI64asF64,
9501 assign(f64lo, getXMMRegLane64F(eregOfRM(modrm), 0));
9502 assign(f64hi, getXMMRegLane64F(eregOfRM(modrm), 1));
9508 assign(f64lo, loadLE(Ity_F64, mkexpr(addr)));
9509 assign(f64hi, loadLE(Ity_F64, binop( Iop_Add32,
9519 assign(rmode, mkU32((UInt)Irrm_ZERO) );
9521 assign( rmode, get_sse_roundingmode() );
9524 assign(
9547 assign( argV, getXMMReg(eregOfRM(modrm)) );
9553 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9559 assign( rmode, get_sse_roundingmode() );
9562 assign( t0, unop(Iop_ReinterpI64asF64,
9564 assign( t1, unop(Iop_ReinterpI64asF64,
9595 assign( arg64, getMMXReg(eregOfRM(modrm)) );
9601 assign( arg64, loadLE(Ity_I64, mkexpr(addr)) );
9628 assign( argV, getXMMReg(eregOfRM(modrm)) );
9634 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9640 assign( rmode, get_sse_roundingmode() );
9669 assign( f32lo, getXMMRegLane32F(eregOfRM(modrm), 0) );
9670 assign( f32hi, getXMMRegLane32F(eregOfRM(modrm), 1) );
9676 assign( f32lo, loadLE(Ity_F32, mkexpr(addr)) );
9677 assign( f32hi, loadLE(Ity_F32,
9706 assign(f64lo, getXMMRegLane64F(eregOfRM(modrm), 0));
9712 assign(f64lo, loadLE(Ity_F64, mkexpr(addr)));
9720 assign( rmode, mkU32((UInt)Irrm_ZERO) );
9722 assign( rmode, get_sse_roundingmode() );
9741 assign(f64lo, getXMMRegLane64F(eregOfRM(modrm), 0));
9746 assign(f64lo, loadLE(Ity_F64, mkexpr(addr)));
9752 assign( rmode, get_sse_roundingmode() );
9769 assign( arg32, getIReg(4, eregOfRM(modrm)) );
9775 assign( arg32, loadLE(Ity_I32, mkexpr(addr)) );
9797 assign(f32lo, getXMMRegLane32F(eregOfRM(modrm), 0));
9802 assign(f32lo, loadLE(Ity_F32, mkexpr(addr)));
9822 assign( argV, getXMMReg(eregOfRM(modrm)) );
9828 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9834 assign( rmode, mkU32((UInt)Irrm_ZERO) );
9838 assign( t0, unop(Iop_ReinterpI64asF64,
9840 assign( t1, unop(Iop_ReinterpI64asF64,
9866 assign( argV, getXMMReg(eregOfRM(modrm)) );
9872 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9878 assign( rmode, mkU32((UInt)Irrm_ZERO) );
10200 assign( t0, binop( Iop_And32,
10203 assign( t1, binop( Iop_And32,
10226 assign( addr, handleSegOverride( sorb, getIReg(4, R_EDI) ));
10227 assign( regD, getXMMReg( gregOfRM(modrm) ));
10232 assign(
10241 assign( olddata, loadLE( Ity_V128, mkexpr(addr) ));
10242 assign( newdata,
10410 assign( dV, getXMMReg(gregOfRM(modrm)) );
10413 assign( sV, getXMMReg(eregOfRM(modrm)) );
10421 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
10429 assign( d1, unop(Iop_V128HIto64, mkexpr(dV)) );
10430 assign( d0, unop(Iop_V128to64, mkexpr(dV)) );
10431 assign( s1, unop(Iop_V128HIto64, mkexpr(sV)) );
10432 assign( s0, unop(Iop_V128to64, mkexpr(sV)) );
10489 assign( dV, getXMMReg(gregOfRM(modrm)) );
10492 assign( sV, getXMMReg(eregOfRM(modrm)) );
10499 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
10506 assign( d1, unop(Iop_V128HIto64, mkexpr(dV)) );
10507 assign( d0, unop(Iop_V128to64, mkexpr(dV)) );
10508 assign( s1, unop(Iop_V128HIto64, mkexpr(sV)) );
10509 assign( s0, unop(Iop_V128to64, mkexpr(sV)) );
10689 assign(t5, getXMMReg(eregOfRM(modrm)));
10692 case 0: assign(t4, unop(Iop_32to16, mkexpr(t0))); break;
10693 case 1: assign(t4, unop(Iop_32HIto16, mkexpr(t0))); break;
10694 case 2: assign(t4, unop(Iop_32to16, mkexpr(t1))); break;
10695 case 3: assign(t4, unop(Iop_32HIto16, mkexpr(t1))); break;
10696 case 4: assign(t4, unop(Iop_32to16, mkexpr(t2))); break;
10697 case 5: assign(t4, unop(Iop_32HIto16, mkexpr(t2))); break;
10698 case 6: assign(t4, unop(Iop_32to16, mkexpr(t3))); break;
10699 case 7: assign(t4, unop(Iop_32HIto16, mkexpr(t3))); break;
10720 assign(t4, getIReg(2, eregOfRM(modrm)));
10730 assign(t4, loadLE(Ity_I16, mkexpr(addr)));
10754 assign( s1V, getXMMReg(eregOfRM(modrm)) );
10760 assign( s1V, loadLE(Ity_V128, mkexpr(addr)) );
10765 assign( s2V, getXMMReg(gregOfRM(modrm)) );
10766 assign( s1Hi, unop(Iop_V128HIto64, mkexpr(s1V)) );
10767 assign( s1Lo, unop(Iop_V128to64, mkexpr(s1V)) );
10768 assign( s2Hi, unop(Iop_V128HIto64, mkexpr(s2V)) );
10769 assign( s2Lo, unop(Iop_V128to64, mkexpr(s2V)) );
10770 assign( dHi, mkIRExprCCall(
10776 assign( dLo, mkIRExprCCall(
10782 assign( dV, binop(Iop_64HLtoV128, mkexpr(dHi), mkexpr(dLo))) ;
10825 assign(t0, getXMMRegLane64(eregOfRM(modrm), 0));
10826 assign(t1, getXMMRegLane64(eregOfRM(modrm), 1));
10828 assign(t5, mkIRExprCCall(
10874 assign( dV, getMMXReg(gregOfRM(modrm)) );
10877 assign( sV, getMMXReg(eregOfRM(modrm)) );
10883 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
10889 assign( t0, unop(Iop_64to32, mkexpr(dV)) );
10890 assign( t1, unop(Iop_64to32, mkexpr(sV)) );
10910 assign( dV, getXMMReg(gregOfRM(modrm)) );
10913 assign( sV, getXMMReg(eregOfRM(modrm)) );
10919 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
10928 assign( t0, binop( Iop_MullU32, mkexpr(d0), mkexpr(s0)) );
10930 assign( t1, binop( Iop_MullU32, mkexpr(d2), mkexpr(s2)) );
10955 assign( s1V, getXMMReg(eregOfRM(modrm)) );
10961 assign( s1V, loadLE(Ity_V128, mkexpr(addr)) );
10966 assign( s2V, getXMMReg(gregOfRM(modrm)) );
10967 assign( s1Hi, unop(Iop_V128HIto64, mkexpr(s1V)) );
10968 assign( s1Lo, unop(Iop_V128to64, mkexpr(s1V)) );
10969 assign( s2Hi, unop(Iop_V128HIto64, mkexpr(s2V)) );
10970 assign( s2Lo, unop(Iop_V128to64, mkexpr(s2V)) );
10971 assign( dHi, mkIRExprCCall(
10977 assign( dLo, mkIRExprCCall(
10983 assign( dV, binop(Iop_64HLtoV128, mkexpr(dHi), mkexpr(dLo))) ;
10997 assign( sV, getXMMReg(eregOfRM(modrm)) );
11005 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11016 assign(dV,
11037 assign( sV, getXMMReg(eregOfRM(modrm)) );
11045 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11052 assign( sVhi, unop(Iop_V128HIto64, mkexpr(sV)) );
11057 assign(dVhi,
11061 assign(dV, binop( Iop_64HLtoV128,
11081 assign( sV, getXMMReg(eregOfRM(modrm)) );
11089 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11096 assign( sVlo, unop(Iop_V128to64, mkexpr(sV)) );
11101 assign(dVlo,
11105 assign(dV, binop( Iop_64HLtoV128,
11150 assign( sV, getXMMReg(reg) );
11151 assign( hi64, unop(Iop_V128HIto64, mkexpr(sV)) );
11152 assign( lo64, unop(Iop_V128to64, mkexpr(sV)) );
11155 assign( lo64r, mkexpr(lo64) );
11156 assign( hi64r, mkexpr(hi64) );
11160 assign( lo64r, mkU64(0) );
11161 assign( hi64r, mkexpr(lo64) );
11165 assign( lo64r, mkU64(0) );
11166 assign( hi64r, binop( Iop_Shl64,
11170 assign( lo64r, binop( Iop_Shl64,
11173 assign( hi64r,
11182 assign( dV, binop(Iop_64HLtoV128, mkexpr(hi64r), mkexpr(lo64r)) );
11280 assign( sV, getXMMReg(reg) );
11281 assign( hi64, unop(Iop_V128HIto64, mkexpr(sV)) );
11282 assign( lo64, unop(Iop_V128to64, mkexpr(sV)) );
11285 assign( lo64r, mkexpr(lo64) );
11286 assign( hi64r, mkexpr(hi64) );
11290 assign( hi64r, mkU64(0) );
11291 assign( lo64r, mkexpr(hi64) );
11295 assign( hi64r, mkU64(0) );
11296 assign( lo64r, binop( Iop_Shr64,
11300 assign( hi64r, binop( Iop_Shr64,
11303 assign( lo64r,
11313 assign( dV, binop(Iop_64HLtoV128, mkexpr(hi64r), mkexpr(lo64r)) );
11561 assign( sV, getXMMReg( eregOfRM(modrm)) );
11569 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11591 assign( sV, getXMMReg( eregOfRM(modrm)) );
11595 assign ( d0, unop(Iop_V128to64, mkexpr(sV)) );
11598 assign( d0, loadLE(Ity_I64, mkexpr(addr)) );
11619 assign( eV, getXMMReg( eregOfRM(modrm)) );
11625 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11631 assign( gV, getXMMReg(gregOfRM(modrm)) );
11633 assign( addV, binop(Iop_Add32Fx4, mkexpr(gV), mkexpr(eV)) );
11634 assign( subV, binop(Iop_Sub32Fx4, mkexpr(gV), mkexpr(eV)) );
11654 assign( eV, getXMMReg( eregOfRM(modrm)) );
11660 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11666 assign( gV, getXMMReg(gregOfRM(modrm)) );
11668 assign( addV, binop(Iop_Add64Fx2, mkexpr(gV), mkexpr(eV)) );
11669 assign( subV, binop(Iop_Sub64Fx2, mkexpr(gV), mkexpr(eV)) );
11671 assign( a1, unop(Iop_V128HIto64, mkexpr(addV) ));
11672 assign( s0, unop(Iop_V128to64, mkexpr(subV) ));
11694 assign( eV, getXMMReg( eregOfRM(modrm)) );
11700 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11706 assign( gV, getXMMReg(gregOfRM(modrm)) );
11711 assign( leftV, mk128from32s( e2, e0, g2, g0 ) );
11712 assign( rightV, mk128from32s( e3, e1, g3, g1 ) );
11736 assign( eV, getXMMReg( eregOfRM(modrm)) );
11742 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11748 assign( gV, getXMMReg(gregOfRM(modrm)) );
11750 assign( e1, unop(Iop_V128HIto64, mkexpr(eV) ));
11751 assign( e0, unop(Iop_V128to64, mkexpr(eV) ));
11752 assign( g1, unop(Iop_V128HIto64, mkexpr(gV) ));
11753 assign( g0, unop(Iop_V128to64, mkexpr(gV) ));
11755 assign( leftV, binop(Iop_64HLtoV128, mkexpr(e0),mkexpr(g0)) );
11756 assign( rightV, binop(Iop_64HLtoV128, mkexpr(e1),mkexpr(g1)) );
11801 assign( dV, getMMXReg(gregOfRM(modrm)) );
11804 assign( sV, getMMXReg(eregOfRM(modrm)) );
11810 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
11817 assign( sVoddsSX,
11819 assign( sVevensSX,
11823 assign( dVoddsZX,
11825 assign( dVevensZX,
11852 assign( dV, getXMMReg(gregOfRM(modrm)) );
11855 assign( sV, getXMMReg(eregOfRM(modrm)) );
11862 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11869 assign( sVoddsSX,
11871 assign( sVevensSX,
11875 assign( dVoddsZX,
11877 assign( dVevensZX,
11934 assign( dV, getMMXReg(gregOfRM(modrm)) );
11937 assign( sV, getMMXReg(eregOfRM(modrm)) );
11943 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12003 assign( dV, getXMMReg(gregOfRM(modrm)) );
12006 assign( sV, getXMMReg( eregOfRM(modrm)) );
12013 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12019 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12020 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12021 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12022 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12052 assign( dV, getMMXReg(gregOfRM(modrm)) );
12055 assign( sV, getMMXReg(eregOfRM(modrm)) );
12061 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12086 assign( dV, getXMMReg(gregOfRM(modrm)) );
12089 assign( sV, getXMMReg(eregOfRM(modrm)) );
12096 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12102 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12103 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12104 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12105 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12137 assign( dV, getMMXReg(gregOfRM(modrm)) );
12140 assign( sV, getMMXReg(eregOfRM(modrm)) );
12146 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12182 assign( dV, getXMMReg(gregOfRM(modrm)) );
12185 assign( sV, getXMMReg(eregOfRM(modrm)) );
12192 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12198 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12199 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12200 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12201 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12234 assign( sV, getMMXReg(eregOfRM(modrm)) );
12240 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12275 assign( sV, getXMMReg(eregOfRM(modrm)) );
12282 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12288 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12289 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12310 assign( dV, getMMXReg(gregOfRM(modrm)) );
12313 assign( sV, getMMXReg(eregOfRM(modrm)) );
12321 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12330 assign( res, mkexpr(sV) );
12333 assign(res,
12340 assign( res, mkexpr(dV) );
12343 assign( res, binop(Iop_Shr64, mkexpr(dV), mkU8(8*(d32-8))) );
12346 assign( res, mkU64(0) );
12368 assign( dV, getXMMReg(gregOfRM(modrm)) );
12371 assign( sV, getXMMReg(eregOfRM(modrm)) );
12380 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12388 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12389 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12390 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12391 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12394 assign( rHi, mkexpr(sHi) );
12395 assign( rLo, mkexpr(sLo) );
12398 assign( rHi, dis_PALIGNR_XMM_helper(dLo, sHi, d32) );
12399 assign( rLo, dis_PALIGNR_XMM_helper(sHi, sLo, d32) );
12402 assign( rHi, mkexpr(dLo) );
12403 assign( rLo, mkexpr(sHi) );
12406 assign( rHi, dis_PALIGNR_XMM_helper(dHi, dLo, d32-8) );
12407 assign( rLo, dis_PALIGNR_XMM_helper(dLo, sHi, d32-8) );
12410 assign( rHi, mkexpr(dHi) );
12411 assign( rLo, mkexpr(dLo) );
12414 assign( rHi, binop(Iop_Shr64, mkexpr(dHi), mkU8(8*(d32-16))) );
12415 assign( rLo, dis_PALIGNR_XMM_helper(dHi, dLo, d32-16) );
12418 assign( rHi, mkU64(0) );
12419 assign( rLo, mkexpr(dHi) );
12422 assign( rHi, mkU64(0) );
12423 assign( rLo, binop(Iop_Shr64, mkexpr(dHi), mkU8(8*(d32-24))) );
12426 assign( rHi, mkU64(0) );
12427 assign( rLo, mkU64(0) );
12447 assign( dV, getMMXReg(gregOfRM(modrm)) );
12450 assign( sV, getMMXReg(eregOfRM(modrm)) );
12456 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12501 assign( dV, getXMMReg(gregOfRM(modrm)) );
12504 assign( sV, getXMMReg(eregOfRM(modrm)) );
12511 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12517 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12518 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12519 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12520 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12522 assign( sevens, mkU64(0x0707070707070707ULL) );
12532 assign(
12536 assign(
12542 assign(sAnd7hi, binop(Iop_And64,mkexpr(sHi),mkexpr(sevens)));
12544 assign(
12555 assign(rHi, binop(Iop_And64,mkexpr(permdHi),mkexpr(mask0x80hi)) );
12559 assign(
12563 assign(
12569 assign(sAnd7lo, binop(Iop_And64,mkexpr(sLo),mkexpr(sevens)));
12571 assign(
12582 assign(rLo, binop(Iop_And64,mkexpr(permdLo),mkexpr(mask0x80lo)) );
12617 assign( src,
12629 assign( src, loadLE( isD ? Ity_F64 : Ity_F32, mkexpr(addr) ));
12641 assign(res, binop(isD ? Iop_RoundF64toInt : Iop_RoundF32toInt,
12663 assign(src, getIReg(sz, eregOfRM(modrm)));
12670 assign(src, loadLE(ty, mkexpr(addr)));
12685 assign(src32, widenUto32(mkexpr(src)));
12686 assign(res32, widenUto32(mkexpr(res)));
12689 assign(
12771 assign(t1, getIReg(4,R_ESP));
12772 assign(t2, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t1),mkU32(0) )));
12773 assign(t3, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t1),mkU32(4) )));
12774 assign(t4, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t1),mkU32(8) )));
12807 assign(t1, binop(Iop_Sub32, getIReg(4,R_ESP), mkU32(4)));
12848 assign(t1, getIReg(4,R_EBP));
12852 assign(t2, loadLE(Ity_I32,mkexpr(t1)));
12872 assign(t1,
12883 assign(t2,
12923 assign(t1,
12933 assign(t2,
13030 assign( t1, binop(mkSizedOp(ty,Iop_Add8),
13049 assign( t1, binop(mkSizedOp(ty,Iop_Sub8),
13330 assign( addr, handleSegOverride(sorb, mkU32(d32)) );
13343 assign( addr, handleSegOverride(sorb, mkU32(d32)) );
13614 assign(t2, getIReg(4, R_ESP));
13615 assign(t1, loadLE(szToITy(sz),mkexpr(t2)));
13624 assign(t2, getIReg(4, R_ESP));
13625 assign(t1, widenUto32(loadLE(szToITy(sz),mkexpr(t2))));
13642 assign( t5, getIReg(4, R_ESP) );
13675 assign( t1, getIReg(4, R_ESP) );
13677 assign( t3, loadLE(ty, mkexpr(t1)) );
13720 assign(t1, getIReg(sz, opc-0x50));
13721 assign(t2, binop(Iop_Sub32, getIReg(4, R_ESP), mkU32(sz)));
13737 assign( t1, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
13751 assign( t1, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
13760 assign( t2, binop(Iop_Or32,
13767 assign( t3, binop(Iop_Or32,
13776 assign( t4, binop(Iop_Or32,
13786 assign( t5, binop(Iop_Or32,
13814 assign( t0, getIReg(4, R_ESP) );
13818 assign( t5, binop(Iop_Sub32, mkexpr(t0), mkU32(8*4)) );
13898 assign( t0, mk_x86g_calculate_eflags_all() );
13901 assign( t1, binop(Iop_And32, mkexpr(t0),
13906 assign( t1, binop(Iop_Or32, mkexpr(t0),
13911 assign( t1, binop(Iop_Xor32, mkexpr(t0),
13929 assign( t0, binop(Iop_And32,
13932 assign( t1, binop(Iop_Sar32,
14056 assign(t1, getIReg(sz, eregOfRM(modrm)));
14057 assign(t2, getIReg(sz, gregOfRM(modrm)));
14067 assign( t1, loadLE(ty,mkexpr(addr)) );
14068 assign( t2, getIReg(sz,gregOfRM(modrm)) );
14114 assign(t1, mkU32( abyte & 0xFF ));
14121 assign(t1, mkU32( abyte & 0xFF ));
14127 assign(t1, unop(Iop_16Uto32, getIReg(2, R_EDX)));
14134 assign(t1, unop(Iop_16Uto32, getIReg(2, R_EDX)));
14162 assign( t1, mkU32( abyte & 0xFF ) );
14169 assign( t1, mkU32( abyte & 0xFF ) );
14175 assign( t1, unop(Iop_16Uto32, getIReg(2, R_EDX)) );
14182 assign( t1, unop(Iop_16Uto32, getIReg(2, R_EDX)) );
14390 assign( t1, getIReg(4, opc-0xC8) );
14392 assign( t2,
14481 assign( expdHi, getIReg(4,R_EDX) );
14482 assign( expdLo, getIReg(4,R_EAX) );
14483 assign( dataHi, getIReg(4,R_ECX) );
14484 assign( dataLo, getIReg(4,R_EBX) );
14495 assign( success,
14523 assign( flags_old, widenUto32(mk_x86g_calculate_eflags_all()));
14524 assign(
14823 assign( t1, unop(Iop_1Uto8,mk_x86g_calculate_condition(opc-0x90)) );