Home | History | Annotate | Download | only in priv

Lines Matching refs:mkexpr

661 static IRExpr* mkexpr ( IRTemp tmp )
765 NULL, mkexpr(expTmp), NULL, newVal );
769 mkexpr(oldTmp), mkexpr(expTmp) ),
929 stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto32(mkexpr(dep1))) );
930 stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto32(mkexpr(dep2))) );
954 stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto32(mkexpr(dep1))) );
989 IRExpr_Mux0X( mkexpr(guard),
993 IRExpr_Mux0X( mkexpr(guard),
995 widenUto32(mkexpr(res)))) );
997 IRExpr_Mux0X( mkexpr(guard),
999 widenUto32(mkexpr(resUS)))) );
1003 IRExpr_Mux0X( mkexpr(guard),
1024 stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto32(mkexpr(res))) );
1048 stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto32(mkexpr(arg1)) ));
1049 stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto32(mkexpr(arg2)) ));
1143 assign( oldcn, narrowTo(ty, mkexpr(oldc)) );
1146 binop(plus,mkexpr(ta1),mkexpr(ta2)),
1147 mkexpr(oldcn)) );
1154 storeLE( mkexpr(taddr), mkexpr(tres) );
1158 casLE( mkexpr(taddr),
1159 mkexpr(texpVal), mkexpr(tres), restart_point );
1164 stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto32(mkexpr(ta1)) ));
1165 stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto32(binop(xor, mkexpr(ta2),
1166 mkexpr(oldcn)) )) );
1167 stmt( IRStmt_Put( OFFB_CC_NDEP, mkexpr(oldc) ) );
1197 assign( oldcn, narrowTo(ty, mkexpr(oldc)) );
1200 binop(minus,mkexpr(ta1),mkexpr(ta2)),
1201 mkexpr(oldcn)) );
1208 storeLE( mkexpr(taddr), mkexpr(tres) );
1212 casLE( mkexpr(taddr),
1213 mkexpr(texpVal), mkexpr(tres), restart_point );
1218 stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto32(mkexpr(ta1) )) );
1219 stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto32(binop(xor, mkexpr(ta2),
1220 mkexpr(oldcn)) )) );
1221 stmt( IRStmt_Put( OFFB_CC_NDEP, mkexpr(oldc) ) );
1365 stmt( IRStmt_Put( OFFB_EIP, mkexpr(t) ) );
1460 mkIRExprVec_4( mkexpr(ldt_ptr), mkexpr(gdt_ptr),
1461 mkexpr(seg_selector), virtual)
1471 binop(Iop_CmpNE32, unop(Iop_64HIto32, mkexpr(r64)), mkU32(0)),
1479 return unop(Iop_64to32, mkexpr(r64));
1861 putIReg(size, gregOfRM(rm), mkexpr(dst1));
1866 putIReg(size, gregOfRM(rm), mkexpr(dst1));
1868 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
1874 putIReg(size, gregOfRM(rm), mkexpr(dst1));
1885 assign( src, loadLE(szToITy(size), mkexpr(addr)) );
1890 putIReg(size, gregOfRM(rm), mkexpr(dst1));
1895 putIReg(size, gregOfRM(rm), mkexpr(dst1));
1897 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
1903 putIReg(size, gregOfRM(rm), mkexpr(dst1));
1974 putIReg(size, eregOfRM(rm), mkexpr(dst1));
1979 putIReg(size, eregOfRM(rm), mkexpr(dst1));
1981 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
1987 putIReg(size, eregOfRM(rm), mkexpr(dst1));
1999 assign(dst0, loadLE(ty,mkexpr(addr)));
2024 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2028 casLE( mkexpr(addr),
2029 mkexpr(dst0)/*expval*/,
2030 mkexpr(dst1)/*newval*/, guest_EIP_curr_instr );
2033 storeLE(mkexpr(addr), mkexpr(dst1));
2085 putIReg(size, gregOfRM(rm), loadLE(szToITy(size), mkexpr(addr)));
2129 storeLE( mkexpr(addr), getIReg(size, gregOfRM(rm)) );
2155 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2161 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2178 putIReg(size, R_EAX, mkexpr(dst1));
2218 loadLE(szToITy(szs),mkexpr(addr)));
2223 loadLE(szToITy(szs),mkexpr(addr))));
2245 assign( dst64, binop(op, mkexpr(src64), mkexpr(t)) );
2246 putIReg( 4, R_EAX, unop(Iop_64to32,mkexpr(dst64)) );
2247 putIReg( 4, R_EDX, unop(Iop_64HIto32,mkexpr(dst64)) );
2255 assign( dst64, binop(op, mkexpr(src64), unop(widen1632,mkexpr(t))) );
2256 putIReg( 2, R_EAX, unop(Iop_32to16,unop(Iop_64to32,mkexpr(dst64))) );
2257 putIReg( 2, R_EDX, unop(Iop_32to16,unop(Iop_64HIto32,mkexpr(dst64))) );
2266 binop(op, mkexpr(src64),
2267 unop(widen1632, unop(widen816, mkexpr(t)))) );
2269 unop(Iop_64to32,mkexpr(dst64)))) );
2271 unop(Iop_64HIto32,mkexpr(dst64)))) );
2318 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2326 putIReg(sz, eregOfRM(modrm), mkexpr(dst1));
2334 assign(dst0, loadLE(ty,mkexpr(addr)));
2359 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2362 casLE( mkexpr(addr), mkexpr(dst0)/*expVal*/,
2363 mkexpr(dst1)/*newVal*/,
2366 storeLE(mkexpr(addr), mkexpr(dst1));
2411 assign(dst0, loadLE(ty,mkexpr(addr)));
2435 = mkIRExprVec_4( widenUto32(mkexpr(dst0)), /* thing to rotate */
2448 assign( dst1, narrowTo(ty, unop(Iop_64to32, mkexpr(r64))) );
2450 stmt( IRStmt_Put( OFFB_CC_DEP1, unop(Iop_64HIto32, mkexpr(r64)) ));
2488 assign( pre32, op32==Iop_Sar32 ? widenSto32(mkexpr(dst0))
2489 : widenUto32(mkexpr(dst0)) );
2492 assign( res32, binop(op32, mkexpr(pre32), mkexpr(shift_amt)) );
2497 mkexpr(pre32),
2500 mkexpr(shift_amt), mkU8(1)),
2507 assign( dst1, narrowTo(ty, mkexpr(res32)) );
2526 assign(rot_amt, mkexpr(rot_amt32));
2528 assign(rot_amt, binop(Iop_And8, mkexpr(rot_amt32), mkU8(8*sz-1)));
2536 mkexpr(dst0),
2537 mkexpr(rot_amt)
2540 mkexpr(dst0),
2541 binop(Iop_Sub8,mkU8(8*sz), mkexpr(rot_amt))
2553 mkexpr(dst0),
2554 mkexpr(rot_amt)
2557 mkexpr(dst0),
2558 binop(Iop_Sub8,mkU8(8*sz), mkexpr(rot_amt))
2574 IRExpr_Mux0X( mkexpr(rot_amt32),
2578 IRExpr_Mux0X( mkexpr(rot_amt32),
2580 widenUto32(mkexpr(dst1)))) );
2582 IRExpr_Mux0X( mkexpr(rot_amt32),
2586 IRExpr_Mux0X( mkexpr(rot_amt32),
2588 mkexpr(oldFlags))) );
2593 putIReg(sz, eregOfRM(modrm), mkexpr(dst1));
2604 storeLE(mkexpr(addr), mkexpr(dst1));
2674 assign( t2, widenUto32(loadLE(ty, mkexpr(t_addr))) );
2684 assign( t2m, binop(Iop_Or32, mkU32(mask), mkexpr(t2)) );
2687 assign( t2m, binop(Iop_And32, mkU32(mask), mkexpr(t2)) );
2690 assign( t2m, binop(Iop_Xor32, mkU32(mask), mkexpr(t2)) );
2702 putIReg(sz, eregOfRM(modrm), narrowTo(ty, mkexpr(t2m)));
2705 casLE( mkexpr(t_addr),
2706 narrowTo(ty, mkexpr(t2))/*expd*/,
2707 narrowTo(ty, mkexpr(t2m))/*new*/,
2710 storeLE(mkexpr(t_addr), narrowTo(ty, mkexpr(t2m)));
2722 binop(Iop_Shr32, mkexpr(t2), mkU8(src_val)),
2753 assign( res64, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
2754 assign( resHi, unop(Iop_64HIto32,mkexpr(res64)));
2755 assign( resLo, unop(Iop_64to32,mkexpr(res64)));
2756 putIReg(4, R_EDX, mkexpr(resHi));
2757 putIReg(4, R_EAX, mkexpr(resLo));
2767 assign( res32, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
2768 assign( resHi, unop(Iop_32HIto16,mkexpr(res32)));
2769 assign( resLo, unop(Iop_32to16,mkexpr(res32)));
2770 putIReg(2, R_EDX, mkexpr(resHi));
2771 putIReg(2, R_EAX, mkexpr(resLo));
2781 assign( res16, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
2782 assign( resHi, unop(Iop_16HIto8,mkexpr(res16)));
2783 assign( resLo, unop(Iop_16to8,mkexpr(res16)));
2784 putIReg(2, R_EAX, mkexpr(res16));
2851 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8), mkexpr(dst0), mkexpr(src)));
2853 putIReg(sz, eregOfRM(modrm), mkexpr(dst1));
2888 assign(t1, loadLE(ty,mkexpr(addr)));
2894 mkexpr(t1), mkU(ty,d32)));
2905 assign(dst1, unop(mkSizedOp(ty,Iop_Not8), mkexpr(t1)));
2907 casLE( mkexpr(addr), mkexpr(t1)/*expd*/, mkexpr(dst1)/*new*/,
2910 storeLE( mkexpr(addr), mkexpr(dst1) );
2919 assign(src, mkexpr(t1));
2921 mkexpr(dst0), mkexpr(src)));
2923 casLE( mkexpr(addr), mkexpr(t1)/*expd*/, mkexpr(dst1)/*new*/,
2926 storeLE( mkexpr(addr), mkexpr(dst1) );
2979 assign(t2, binop(Iop_Add8, mkexpr(t1), mkU8(1)));
2980 putIReg(1, eregOfRM(modrm), mkexpr(t2));
2984 assign(t2, binop(Iop_Sub8, mkexpr(t1), mkU8(1)));
2985 putIReg(1, eregOfRM(modrm), mkexpr(t2));
2997 assign( t1, loadLE(ty, mkexpr(addr)) );
3000 assign(t2, binop(Iop_Add8, mkexpr(t1), mkU8(1)));
3002 casLE( mkexpr(addr), mkexpr(t1)/*expd*/, mkexpr(t2)/*new*/,
3005 storeLE( mkexpr(addr), mkexpr(t2) );
3010 assign(t2, binop(Iop_Sub8, mkexpr(t1), mkU8(1)));
3012 casLE( mkexpr(addr), mkexpr(t1)/*expd*/, mkexpr(t2)/*new*/,
3015 storeLE( mkexpr(addr), mkexpr(t2) );
3060 mkexpr(t1), mkU(ty,1)));
3062 putIReg(sz,eregOfRM(modrm),mkexpr(t2));
3068 mkexpr(t1), mkU(ty,1)));
3070 putIReg(sz,eregOfRM(modrm),mkexpr(t2));
3076 putIReg(4, R_ESP, mkexpr(t2));
3077 storeLE( mkexpr(t2), mkU32(guest_EIP_bbstart+delta+1));
3090 putIReg(4, R_ESP, mkexpr(t2) );
3091 storeLE( mkexpr(t2), mkexpr(t1) );
3102 assign(t1, loadLE(ty,mkexpr(addr)));
3107 mkexpr(t1), mkU(ty,1)));
3109 casLE( mkexpr(addr),
3110 mkexpr(t1), mkexpr(t2), guest_EIP_curr_instr );
3112 storeLE(mkexpr(addr),mkexpr(t2));
3119 mkexpr(t1), mkU(ty,1)));
3121 casLE( mkexpr(addr),
3122 mkexpr(t1), mkexpr(t2), guest_EIP_curr_instr );
3124 storeLE(mkexpr(addr),mkexpr(t2));
3132 putIReg(4, R_ESP, mkexpr(t2));
3133 storeLE( mkexpr(t2), mkU32(guest_EIP_bbstart+delta+len));
3146 putIReg(4, R_ESP, mkexpr(t2) );
3147 storeLE( mkexpr(t2), mkexpr(t1) );
3200 storeLE( mkexpr(td), loadLE(ty,mkexpr(ts)) );
3202 putIReg( 4, R_EDI, binop(Iop_Add32, mkexpr(td), mkexpr(t_inc)) );
3203 putIReg( 4, R_ESI, binop(Iop_Add32, mkexpr(ts), mkexpr(t_inc)) );
3214 putIReg( sz, R_EAX, loadLE(ty, mkexpr(ts)) );
3216 putIReg( 4, R_ESI, binop(Iop_Add32, mkexpr(ts), mkexpr(t_inc)) );
3229 storeLE( mkexpr(td), mkexpr(ta) );
3231 putIReg( 4, R_EDI, binop(Iop_Add32, mkexpr(td), mkexpr(t_inc)) );
3246 assign( tdv, loadLE(ty,mkexpr(td)) );
3247 assign( tsv, loadLE(ty,mkexpr(ts)) );
3251 putIReg(4, R_EDI, binop(Iop_Add32, mkexpr(td), mkexpr(t_inc)) );
3252 putIReg(4, R_ESI, binop(Iop_Add32, mkexpr(ts), mkexpr(t_inc)) );
3266 assign( tdv, loadLE(ty,mkexpr(td)) );
3269 putIReg(4, R_EDI, binop(Iop_Add32, mkexpr(td), mkexpr(t_inc)) );
3287 stmt( IRStmt_Exit( binop(Iop_CmpEQ32,mkexpr(tc),mkU32(0)),
3291 putIReg(4, R_ECX, binop(Iop_Sub32, mkexpr(tc), mkU32(1)) );
3333 assign( te, loadLE(ty,mkexpr(addr)) );
3338 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tg) ) );
3340 putIReg(size, gregOfRM(rm), mkexpr(resLo) );
3377 assign(te, loadLE(ty, mkexpr(addr)));
3388 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tl) ));
3392 putIReg(size, gregOfRM(rm), mkexpr(resLo));
3411 assign(src32, widenUto32( mkexpr(src) ));
3415 binop(Iop_Shl32, mkexpr(src32),
3424 binop(Iop_CmpEQ32, mkexpr(src32x), mkU32(0))),
3425 unop(Iop_Clz32, mkexpr(src32x)),
3430 assign(res, narrowTo(ty, mkexpr(res32)));
3654 loadLE(Ity_F64,mkexpr(addr))
3661 unop(Iop_F32toF64, loadLE(Ity_F32,mkexpr(addr)))
3679 loadLE(Ity_F64,mkexpr(addr)),
3686 unop(Iop_F32toF64, loadLE(Ity_F32,mkexpr(addr))),
3800 loadLE(Ity_F32,mkexpr(addr)))),
3815 loadLE(Ity_F32,mkexpr(addr)))),
3922 loadLE(Ity_F32, mkexpr(addr))));
3927 storeLE(mkexpr(addr),
3933 storeLE(mkexpr(addr),
3946 mkIRExprVec_1( mkexpr(addr) )
3952 d->mAddr = mkexpr(addr);
3981 put_emwarn( mkexpr(ew) );
3984 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
4014 loadLE(Ity_I16, mkexpr(addr)))
4019 put_fpround( unop(Iop_64to32, mkexpr(t64)) );
4020 assign( ew, unop(Iop_64HIto32, mkexpr(t64) ) );
4021 put_emwarn( mkexpr(ew) );
4027 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
4043 mkIRExprVec_1( mkexpr(addr) )
4048 d->mAddr = mkexpr(addr);
4084 mkexpr(addr),
4111 put_ST(0, mkexpr(t1));
4121 put_ST_UNCHECKED(0, mkexpr(t2));
4122 put_ST_UNCHECKED(r_src, mkexpr(t1));
4270 assign( argI, unop(Iop_ReinterpF64asI64, mkexpr(argF)));
4276 mkIRExprVec_2( mkexpr(argI),
4284 mkIRExprVec_2( mkexpr(argI),
4287 assign( sigF, unop(Iop_ReinterpI64asF64, mkexpr(sigI)) );
4288 assign( expF, unop(Iop_ReinterpI64asF64, mkexpr(expI)) );
4290 put_ST_UNCHECKED(0, mkexpr(expF) );
4293 put_ST(0, mkexpr(sigF) );
4308 mkexpr(a1),
4309 mkexpr(a2)));
4313 mkexpr(a1),
4314 mkexpr(a2)) );
4334 mkexpr(a1),
4335 mkexpr(a2)));
4339 mkexpr(a1),
4340 mkexpr(a2)) );
4369 mkexpr(a1)));
4374 mkexpr(a1)));
4450 loadLE(Ity_I32,mkexpr(addr)))),
4465 loadLE(Ity_I32,mkexpr(addr)))),
4498 loadLE(Ity_I32, mkexpr(addr)))));
4506 loadLE(Ity_I32, mkexpr(addr))),
4598 loadLE(Ity_I32, mkexpr(addr))));
4603 storeLE( mkexpr(addr),
4610 storeLE( mkexpr(addr),
4616 storeLE( mkexpr(addr),
4627 IRExpr** args = mkIRExprVec_1 ( mkexpr(addr) );
4638 d->mAddr = mkexpr(addr);
4644 put_ST(0, unop(Iop_ReinterpI64asF64, mkexpr(val)));
4653 = mkIRExprVec_2( mkexpr(addr),
4664 d->mAddr = mkexpr(addr);
4813 loadLE(Ity_F64,mkexpr(addr))),
4827 loadLE(Ity_F64,mkexpr(addr))),
4908 put_ST(0, loadLE(Ity_F64, mkexpr(addr)));
4913 storeLE( mkexpr(addr),
4920 storeLE(mkexpr(addr), get_ST(0));
4925 storeLE(mkexpr(addr), get_ST(0));
4937 mkIRExprVec_1( mkexpr(addr) )
4943 d->mAddr = mkexpr(addr);
4976 put_emwarn( mkexpr(ew) );
4979 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
4997 mkIRExprVec_1( mkexpr(addr) )
5002 d->mAddr = mkexpr(addr);
5038 storeLE( mkexpr(addr), sw );
5144 loadLE(Ity_I16,mkexpr(addr))))),
5160 loadLE(Ity_I16,mkexpr(addr))))),
5194 loadLE(Ity_I16, mkexpr(addr))))));
5203 loadLE(Ity_I16, mkexpr(addr)))),
5281 loadLE(Ity_I16, mkexpr(addr)))));
5286 storeLE( mkexpr(addr),
5293 storeLE( mkexpr(addr),
5299 storeLE( mkexpr(addr),
5309 loadLE(Ity_I64, mkexpr(addr))));
5314 storeLE( mkexpr(addr),
5355 putIReg( 1, R_AL, unop(Iop_16to8, mkexpr(t16)) );
5356 putIReg( 1, R_AH, unop(Iop_16HIto8, mkexpr(t16)) );
5557 argE = loadLE(Ity_I64, mkexpr(addr));
5584 putMMXReg( gregOfRM(modrm), mkexpr(res) );
5619 assign( amt, loadLE(Ity_I32, mkexpr(addr)) );
5626 assign( amt8, unop(Iop_32to8, mkexpr(amt)) );
5646 unop(Iop_1Uto8,binop(Iop_CmpLT32U,mkexpr(amt),mkU32(size))),
5648 binop(op, mkexpr(g0), mkexpr(amt8))
5656 unop(Iop_1Uto8,binop(Iop_CmpLT32U,mkexpr(amt),mkU32(size))),
5657 binop(op, mkexpr(g0), mkU8(size-1)),
5658 binop(op, mkexpr(g0), mkexpr(amt8))
5666 putMMXReg( gregOfRM(rm), mkexpr(g1) );
5710 : binop(op, mkexpr(e0), mkU8(amt))
5715 ? binop(op, mkexpr(e0), mkU8(size-1))
5716 : binop(op, mkexpr(e0), mkU8(amt))
5723 putMMXReg( eregOfRM(rm), mkexpr(e1) );
5765 loadLE(Ity_I32, mkexpr(addr)) ) );
5783 storeLE( mkexpr(addr),
5802 putMMXReg( gregOfRM(modrm), loadLE(Ity_I64, mkexpr(addr)) );
5821 storeLE( mkexpr(addr), getMMXReg(gregOfRM(modrm)) );
6037 assign( mask, binop(Iop_SarN8x8, mkexpr(regM), mkU8(7)) );
6038 assign( olddata, loadLE( Ity_I64, mkexpr(addr) ));
6042 mkexpr(regD),
6043 mkexpr(mask) ),
6045 mkexpr(olddata),
6046 unop(Iop_Not64, mkexpr(mask)))) );
6047 storeLE( mkexpr(addr), mkexpr(newdata) );
6127 assign( esrc, loadLE(ty, mkexpr(addr)) );
6161 assign( tmpL, binop(mkpair, mkexpr(esrc), mkexpr(gsrc)) );
6163 assign( tmpL, binop(mkpair, mkexpr(gsrc), mkexpr(esrc)) );
6165 assign( tmpRes, unop(getres, binop(shift, mkexpr(tmpL), mkexpr(tmpSH)) ) );
6169 mkexpr(tmpL),
6171 binop(Iop_Sub8, mkexpr(tmpSH), mkU8(1) ),
6180 putIReg(sz, eregOfRM(modrm), mkexpr(tmpRes));
6182 storeLE( mkexpr(addr), mkexpr(tmpRes) );
6245 putIReg(4, R_ESP, mkexpr(t_esp));
6247 storeLE( mkexpr(t_esp), getIReg(sz, eregOfRM(modrm)) );
6250 assign( t_addr0, mkexpr(t_esp) );
6255 mkexpr(t_bitno0),
6261 assign( t_bitno1, mkexpr(t_bitno0) );
6272 mkexpr(t_addr0),
6273 binop(Iop_Sar32, mkexpr(t_bitno1), mkU8(3))) );
6279 binop(Iop_And32, mkexpr(t_bitno1), mkU32(7))) );
6285 assign( t_mask, binop(Iop_Shl8, mkU8(1), mkexpr(t_bitno2)) );
6290 assign( t_fetched, loadLE(Ity_I8, mkexpr(t_addr1)) );
6296 binop(Iop_Or8, mkexpr(t_fetched), mkexpr(t_mask)) );
6300 binop(Iop_Xor8, mkexpr(t_fetched), mkexpr(t_mask)) );
6304 binop(Iop_And8, mkexpr(t_fetched),
6305 unop(Iop_Not8, mkexpr(t_mask))) );
6311 casLE( mkexpr(t_addr1), mkexpr(t_fetched)/*expd*/,
6312 mkexpr(t_new)/*new*/,
6315 storeLE( mkexpr(t_addr1), mkexpr(t_new) );
6327 unop(Iop_8Uto32, mkexpr(t_fetched)),
6328 mkexpr(t_bitno2)),
6338 putIReg(sz, eregOfRM(modrm), loadLE(szToITy(sz), mkexpr(t_esp)) );
6339 putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(t_esp), mkU32(128)) );
6379 assign( src, loadLE(ty, mkexpr(addr)) );
6391 mkexpr(src), mkU(ty,0))) );
6399 IRExpr_Mux0X( mkexpr(src8),
6429 assign( src32, unop(Iop_16Uto32, mkexpr(src)) );
6431 assign( src32, mkexpr(src) );
6436 mkexpr(src8),
6440 fwds ? unop(Iop_Ctz32, mkexpr(src32))
6443 unop(Iop_Clz32, mkexpr(src32)))
6448 assign( dst, unop(Iop_32to16, mkexpr(dst32)) );
6450 assign( dst, mkexpr(dst32) );
6453 putIReg( sz, gregOfRM(modrm), mkexpr(dst) );
6468 putIReg( sz, R_EAX, mkexpr(t2) );
6469 putIReg( sz, reg, mkexpr(t1) );
6492 binop(Iop_And32, mkexpr(oldflags), mkU32(X86G_CC_MASK_O)),
6520 = binop(Iop_Or32, binop(Iop_And32, mkexpr(flags), mkU32(mask_SZACP)),
6566 assign( dest2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(src)) );
6567 assign( acc2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(acc)) );
6568 putIReg(size, R_EAX, mkexpr(acc2));
6569 putIReg(size, eregOfRM(rm), mkexpr(dest2));
6577 assign( dest, loadLE(ty, mkexpr(addr)) );
6583 assign( dest2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(src)) );
6584 assign( acc2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(acc)) );
6585 putIReg(size, R_EAX, mkexpr(acc2));
6586 storeLE( mkexpr(addr), mkexpr(dest2) );
6601 mkIRCAS( IRTemp_INVALID, dest, Iend_LE, mkexpr(addr),
6602 NULL, mkexpr(acc), NULL, mkexpr(src) )
6606 assign( acc2, IRExpr_Mux0X(mkexpr(cond8), mkexpr(dest), mkexpr(acc)) );
6607 putIReg(size, R_EAX, mkexpr(acc2));
6655 mkexpr(tmpd),
6656 mkexpr(tmps) )
6668 assign( tmps, loadLE(ty, mkexpr(addr)) );
6674 mkexpr(tmpd),
6675 mkexpr(tmps) )
6716 mkexpr(tmpd), mkexpr(tmpt0)) );
6718 putIReg(sz, eregOfRM(rm), mkexpr(tmpt1));
6719 putIReg(sz, gregOfRM(rm), mkexpr(tmpd));
6729 assign( tmpd, loadLE(ty, mkexpr(addr)) );
6732 mkexpr(tmpd), mkexpr(tmpt0)) );
6733 storeLE( mkexpr(addr), mkexpr(tmpt1) );
6735 putIReg(sz, gregOfRM(rm), mkexpr(tmpd));
6744 assign( tmpd, loadLE(ty, mkexpr(addr)) );
6747 mkexpr(tmpd), mkexpr(tmpt0)) );
6748 casLE( mkexpr(addr), mkexpr(tmpd)/*expVal*/,
6749 mkexpr(tmpt1)/*newVal*/, guest_EIP_curr_instr );
6751 putIReg(sz, gregOfRM(rm), mkexpr(tmpd));
6777 putSReg( gregOfRM(rm), loadLE(Ity_I16, mkexpr(addr)) );
6808 storeLE( mkexpr(addr), getSReg(gregOfRM(rm)) );
6824 putIReg(4, R_ESP, mkexpr(ta));
6825 storeLE( mkexpr(ta), mkexpr(t1) );
6838 assign( t1, loadLE(Ity_I16, mkexpr(ta)) );
6840 putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(ta), mkU32(sz)) );
6841 putSReg( sreg, mkexpr(t1) );
6851 assign(t2, loadLE(Ity_I32,mkexpr(t1)));
6852 putIReg(4, R_ESP,binop(Iop_Add32, mkexpr(t1), mkU32(4+d32)));
6890 loadLE(Ity_V128, mkexpr(addr))) );
6941 loadLE(Ity_I32, mkexpr(addr))) );
6943 binop(op, gpart, mkexpr(epart)) );
6976 loadLE(Ity_I64, mkexpr(addr))) );
6978 binop(op, gpart, mkexpr(epart)) );
7008 unop(op, loadLE(Ity_V128, mkexpr(addr))) );
7038 mkexpr(oldG0),
7040 putXMMReg( gregOfRM(rm), unop(op, mkexpr(oldG1)) );
7049 mkexpr(oldG0),
7050 loadLE(Ity_I32, mkexpr(addr)) ));
7051 putXMMReg( gregOfRM(rm), unop(op, mkexpr(oldG1)) );
7081 mkexpr(oldG0),
7083 putXMMReg( gregOfRM(rm), unop(op, mkexpr(oldG1)) );
7092 mkexpr(oldG0),
7093 loadLE(Ity_I64, mkexpr(addr)) ));
7094 putXMMReg( gregOfRM(rm), unop(op, mkexpr(oldG1)) );
7127 epart = loadLE(Ity_V128, mkexpr(addr));
7224 all_lanes ? loadLE(Ity_V128, mkexpr(addr))
7225 : sz == 8 ? unop( Iop_64UtoV128, loadLE(Ity_I64, mkexpr(addr)))
7226 : /*sz==4*/ unop( Iop_32UtoV128, loadLE(Ity_I32, mkexpr(addr)))
7238 unop(Iop_NotV128, mkexpr(plain)) );
7244 binop(Iop_XorV128, mkexpr(plain), mkV128(mask)) );
7247 putXMMReg( gregOfRM(rm), mkexpr(plain) );
7277 assign( amt, loadLE(Ity_I32, mkexpr(addr)) );
7284 assign( amt8, unop(Iop_32to8, mkexpr(amt)) );
7304 unop(Iop_1Uto8,binop(Iop_CmpLT32U,mkexpr(amt),mkU32(size))),
7306 binop(op, mkexpr(g0), mkexpr(amt8))
7314 unop(Iop_1Uto8,binop(Iop_CmpLT32U,mkexpr(amt),mkU32(size))),
7315 binop(op, mkexpr(g0), mkU8(size-1)),
7316 binop(op, mkexpr(g0), mkexpr(amt8))
7324 putXMMReg( gregOfRM(rm), mkexpr(g1) );
7366 : binop(op, mkexpr(e0), mkU8(amt))
7371 ? binop(op, mkexpr(e0), mkU8(size-1))
7372 : binop(op, mkexpr(e0), mkU8(amt))
7379 putXMMReg( eregOfRM(rm), mkexpr(e1) );
7408 assign( hi64, unop(Iop_V128HIto64, mkexpr(t128)) );
7409 assign( lo64, unop(Iop_V128to64, mkexpr(t128)) );
7420 assign( *t0, unop(Iop_64to32, mkexpr(lo64)) );
7421 assign( *t1, unop(Iop_64HIto32, mkexpr(lo64)) );
7422 assign( *t2, unop(Iop_64to32, mkexpr(hi64)) );
7423 assign( *t3, unop(Iop_64HIto32, mkexpr(hi64)) );
7433 binop(Iop_32HLto64, mkexpr(t3), mkexpr(t2)),
7434 binop(Iop_32HLto64, mkexpr(t1), mkexpr(t0))
7447 assign( hi32, unop(Iop_64HIto32, mkexpr(t64)) );
7448 assign( lo32, unop(Iop_64to32, mkexpr(t64)) );
7459 assign( *t0, unop(Iop_32to16, mkexpr(lo32)) );
7460 assign( *t1, unop(Iop_32HIto16, mkexpr(lo32)) );
7461 assign( *t2, unop(Iop_32to16, mkexpr(hi32)) );
7462 assign( *t3, unop(Iop_32HIto16, mkexpr(hi32)) );
7472 binop(Iop_16HLto32, mkexpr(t3), mkexpr(t2)),
7473 binop(Iop_16HLto32, mkexpr(t1), mkexpr(t0))
7503 mkexpr(t1),
7521 binop(Iop_Shr32, mkexpr(t1), mkU8(10)),
7533 binop(Iop_Shr32, mkexpr(t1), mkU8(21)),
7546 binop(Iop_Shr32, mkexpr(t1), mkU8(18)),
7557 binop(Iop_And32, mkexpr(t1), mkU32(1<<18)),
7588 binop(Iop_InterleaveHI16x4, mkexpr(aa), mkexpr(aa)),
7592 binop(Iop_InterleaveLO16x4, mkexpr(aa), mkexpr(aa)),
7596 binop(Iop_InterleaveHI16x4, mkexpr(bb), mkexpr(bb)),
7600 binop(Iop_InterleaveLO16x4, mkexpr(bb), mkexpr(bb)),
7611 binop(Iop_Mul32x2, mkexpr(aahi32s), mkexpr(bbhi32s)),
7614 mkexpr(one32x2)
7627 binop(Iop_Mul32x2, mkexpr(aalo32s), mkexpr(bblo32s)),
7630 mkexpr(one32x2)
7636 binop(Iop_CatEvenLanes16x4, mkexpr(rHi), mkexpr(rLo));
7667 assign( bbNeg, binop(opSub, mkexpr(zero), mkexpr(bb)) );
7668 assign( negMask, binop(opCmpGTS, mkexpr(zero), mkexpr(aa)) );
7669 assign( posMask, binop(opCmpGTS, mkexpr(aa), mkexpr(zero)) );
7673 binop(Iop_And64, mkexpr(bb), mkexpr(posMask)),
7674 binop(Iop_And64, mkexpr(bbNeg), mkexpr(negMask)) );
7705 assign( negMask, binop(opSarN, mkexpr(aa), mkU8(8*laneszB-1)) );
7706 assign( posMask, unop(Iop_Not64, mkexpr(negMask)) );
7708 assign( aaNeg, binop(opSub, mkexpr(zero), mkexpr(aa)) );
7711 binop(Iop_And64, mkexpr(aa), mkexpr(posMask)),
7712 binop(Iop_And64, mkexpr(aaNeg), mkexpr(negMask)) );
7721 binop(Iop_Shl64, mkexpr(hi64), mkU8(8*(8-byteShift))),
7722 binop(Iop_Shr64, mkexpr(lo64), mkU8(8*byteShift))
7735 binop(Iop_And32,mkexpr(effective_addr),mkU32(0xF)),
7881 binop(Iop_Shl32, mkexpr(t1), mkU8(24)),
7884 binop(Iop_And32, binop(Iop_Shl32, mkexpr(t1), mkU8(8)),
7887 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(8)),
7889 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(24)),
7898 binop(Iop_Shl16, mkexpr(t1), mkU8(8)),
7899 binop(Iop_Shr16, mkexpr(t1), mkU8(8)) ));
8014 putIReg(4, R_ESP, mkexpr(t2));
8015 storeLE( mkexpr(t2), mkU32(guest_EIP_bbstart+delta));
8171 mkIRExprVec_1( mkexpr(addr) )
8177 d->mAddr = mkexpr(addr);
8246 mkIRExprVec_1( mkexpr(addr) )
8252 d->mAddr = mkexpr(addr);
8359 assign( argR, loadLE(Ity_F32, mkexpr(addr)) );
8372 unop(Iop_F32toF64,mkexpr(argL)),
8373 unop(Iop_F32toF64,mkexpr(argR))),
8398 assign( arg64, loadLE(Ity_I64, mkexpr(addr)) );
8409 mkexpr(rmode),
8411 unop(Iop_64to32, mkexpr(arg64)) )) );
8416 mkexpr(rmode),
8418 unop(Iop_64HIto32, mkexpr(arg64)) )) );
8438 assign( arg32, loadLE(Ity_I32, mkexpr(addr)) );
8449 mkexpr(rmode),
8450 unop(Iop_I32StoF64, mkexpr(arg32)) ) );
8478 assign(f32lo, loadLE(Ity_F32, mkexpr(addr)));
8480 mkexpr(addr),
8498 mkexpr(rmode),
8499 unop( Iop_F32toF64, mkexpr(f32hi) ) ),
8501 mkexpr(rmode),
8502 unop( Iop_F32toF64, mkexpr(f32lo) ) )
8506 putMMXReg(gregOfRM(modrm), mkexpr(dst64));
8530 assign(f32lo, loadLE(Ity_F32, mkexpr(addr)));
8545 mkexpr(rmode),
8546 unop( Iop_F32toF64, mkexpr(f32lo) ) )
8592 mkIRExprVec_1( loadLE(Ity_I32, mkexpr(addr)) )
8596 put_sse_roundingmode( unop(Iop_64to32, mkexpr(t64)) );
8597 assign( ew, unop(Iop_64HIto32, mkexpr(t64) ) );
8598 put_emwarn( mkexpr(ew) );
8604 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
8664 loadLE(Ity_V128, mkexpr(addr)) );
8683 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
8705 loadLE(Ity_I64, mkexpr(addr)) );
8718 storeLE( mkexpr(addr),
8743 loadLE(Ity_I64, mkexpr(addr)) );
8756 storeLE( mkexpr(addr),
8792 binop(Iop_Or32, mkexpr(t0), mkexpr(t1)),
8793 binop(Iop_Or32, mkexpr(t2), mkexpr(t3))
8810 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
8831 storeLE( mkexpr(addr), getMMXReg(gregOfRM(modrm)) );
8859 loadLE(Ity_I32, mkexpr(addr)) );
8876 storeLE( mkexpr(addr),
8934 case 0: assign(t5, mkexpr(t0)); break;
8935 case 1: assign(t5, mkexpr(t1)); break;
8936 case 2: assign(t5, mkexpr(t2)); break;
8937 case 3: assign(t5, mkexpr(t3)); break;
8940 putIReg(4, gregOfRM(modrm), unop(Iop_16Uto32, mkexpr(t5)));
8978 assign(t4, loadLE(Ity_I16, mkexpr(addr)));
8991 putMMXReg(gregOfRM(modrm), mkexpr(t6));
9046 mkIRExprVec_1(mkexpr(t0))));
9047 putIReg(4, gregOfRM(modrm), mkexpr(t1));
9143 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
9158 putMMXReg(gregOfRM(modrm), mkexpr(dV));
9227 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
9283 storeLE( mkexpr(addr),
9327 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
9418 assign( argR, loadLE(Ity_F64, mkexpr(addr)) );
9430 binop(Iop_CmpF64, mkexpr(argL), mkexpr(argR)),
9453 assign( arg64, loadLE(Ity_I64, mkexpr(addr)) );
9461 unop(Iop_I32StoF64, unop(Iop_64to32, mkexpr(arg64)))
9466 unop(Iop_I32StoF64, unop(Iop_64HIto32, mkexpr(arg64)))
9486 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9496 mkexpr(rmode), \
9497 unop(Iop_I32StoF64,mkexpr(_t)))
9524 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9534 unop(Iop_V128to64, mkexpr(argV))) );
9536 unop(Iop_V128HIto64, mkexpr(argV))) );
9539 mkexpr(rmode), \
9540 mkexpr(_t) )
9575 assign(f64lo, loadLE(Ity_F64, mkexpr(addr)));
9577 mkexpr(addr),
9594 binop( Iop_F64toI32S, mkexpr(rmode), mkexpr(f64hi) ),
9595 binop( Iop_F64toI32S, mkexpr(rmode), mkexpr(f64lo) )
9599 putMMXReg(gregOfRM(modrm), mkexpr(dst64));
9620 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9630 unop(Iop_V128to64, mkexpr(argV))) );
9632 unop(Iop_V128HIto64, mkexpr(argV))) );
9635 mkexpr(rmode), \
9636 mkexpr(_t) )
9668 assign( arg64, loadLE(Ity_I64, mkexpr(addr)) );
9676 unop(Iop_I32StoF64, unop(Iop_64to32, mkexpr(arg64)) )
9681 unop(Iop_I32StoF64, unop(Iop_64HIto32, mkexpr(arg64)) )
9701 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9714 mkexpr(rmode), \
9716 unop( Iop_ReinterpI32asF32, mkexpr(_t))) )
9743 assign( f32lo, loadLE(Ity_F32, mkexpr(addr)) );
9745 binop(Iop_Add32,mkexpr(addr),mkU32(4))) );
9752 unop(Iop_F32toF64, mkexpr(f32hi)) );
9754 unop(Iop_F32toF64, mkexpr(f32lo)) );
9779 assign(f64lo, loadLE(Ity_F64, mkexpr(addr)));
9793 binop( Iop_F64toI32S, mkexpr(rmode), mkexpr(f64lo)) );
9813 assign(f64lo, loadLE(Ity_F64, mkexpr(addr)));
9822 binop( Iop_F64toF32, mkexpr(rmode), mkexpr(f64lo) )
9842 assign( arg32, loadLE(Ity_I32, mkexpr(addr)) );
9850 unop(Iop_I32StoF64, mkexpr(arg32)) );
9869 assign(f32lo, loadLE(Ity_F32, mkexpr(addr)));
9876 unop( Iop_F32toF64, mkexpr(f32lo) ) );
9895 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9906 unop(Iop_V128to64, mkexpr(argV))) );
9908 unop(Iop_V128HIto64, mkexpr(argV))) );
9911 mkexpr(rmode), \
9912 mkexpr(_t) )
9939 assign( argV, loadLE(Ity_V128, mkexpr(addr)) );
9952 mkexpr(rmode), \
9954 unop( Iop_ReinterpI32asF32, mkexpr(_t))) )
10038 loadLE(Ity_V128, mkexpr(addr)) );
10058 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
10082 unop( Iop_32UtoV128,loadLE(Ity_I32, mkexpr(addr)) )
10101 storeLE( mkexpr(addr),
10121 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
10142 loadLE(Ity_V128, mkexpr(addr)) );
10165 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
10199 loadLE(Ity_I64, mkexpr(addr)) );
10213 storeLE( mkexpr(addr),
10233 loadLE(Ity_I64, mkexpr(addr)) );
10247 storeLE( mkexpr(addr),
10274 binop(Iop_Or32, mkexpr(t0), mkexpr(t1))
10308 assign( olddata, loadLE( Ity_V128, mkexpr(addr) ));
10312 mkexpr(regD),
10313 mkexpr(mask) ),
10315 mkexpr(olddata),
10316 unop(Iop_NotV128, mkexpr(mask)))) );
10317 storeLE( mkexpr(addr), mkexpr(newdata) );
10333 storeLE( mkexpr(addr), getXMMReg(gregOfRM(modrm)) );
10348 storeLE( mkexpr(addr), getIReg(4, gregOfRM(modrm)) );
10366 storeLE( mkexpr(addr),
10417 loadLE(Ity_I64, mkexpr(addr)) );
10438 storeLE( mkexpr(addr),
10488 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
10496 assign( d1, unop(Iop_V128HIto64, mkexpr(dV)) );
10497 assign( d0, unop(Iop_V128to64, mkexpr(dV)) );
10498 assign( s1, unop(Iop_V128HIto64, mkexpr(sV)) );
10499 assign( s0, unop(Iop_V128to64, mkexpr(sV)) );
10501 # define SELD(n) mkexpr((n)==0 ? d0 : d1)
10502 # define SELS(n) mkexpr((n)==0 ? s0 : s1)
10566 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
10573 assign( d1, unop(Iop_V128HIto64, mkexpr(dV)) );
10574 assign( d0, unop(Iop_V128to64, mkexpr(dV)) );
10575 assign( s1, unop(Iop_V128HIto64, mkexpr(sV)) );
10576 assign( s0, unop(Iop_V128to64, mkexpr(sV)) );
10580 binop(Iop_64HLtoV128, mkexpr(s1), mkexpr(d1)) );
10583 binop(Iop_64HLtoV128, mkexpr(s0), mkexpr(d0)) );
10762 case 0: assign(t4, unop(Iop_32to16, mkexpr(t0))); break;
10763 case 1: assign(t4, unop(Iop_32HIto16, mkexpr(t0))); break;
10764 case 2: assign(t4, unop(Iop_32to16, mkexpr(t1))); break;
10765 case 3: assign(t4, unop(Iop_32HIto16, mkexpr(t1))); break;
10766 case 4: assign(t4, unop(Iop_32to16, mkexpr(t2))); break;
10767 case 5: assign(t4, unop(Iop_32HIto16, mkexpr(t2))); break;
10768 case 6: assign(t4, unop(Iop_32to16, mkexpr(t3))); break;
10769 case 7: assign(t4, unop(Iop_32HIto16, mkexpr(t3))); break;
10772 putIReg(4, gregOfRM(modrm), unop(Iop_16Uto32, mkexpr(t4)));
10800 assign(t4, loadLE(Ity_I16, mkexpr(addr)));
10806 putXMMRegLane16( gregOfRM(modrm), lane & 7, mkexpr(t4) );
10830 assign( s1V, loadLE(Ity_V128, mkexpr(addr)) );
10836 assign( s1Hi, unop(Iop_V128HIto64, mkexpr(s1V)) );
10837 assign( s1Lo, unop(Iop_V128to64, mkexpr(s1V)) );
10838 assign( s2Hi, unop(Iop_V128HIto64, mkexpr(s2V)) );
10839 assign( s2Lo, unop(Iop_V128to64, mkexpr(s2V)) );
10844 mkIRExprVec_2( mkexpr(s1Hi), mkexpr(s2Hi))
10850 mkIRExprVec_2( mkexpr(s1Lo), mkexpr(s2Lo))
10852 assign( dV, binop(Iop_64HLtoV128, mkexpr(dHi), mkexpr(dLo))) ;
10853 putXMMReg(gregOfRM(modrm), mkexpr(dV));
10902 mkIRExprVec_2( mkexpr(t1), mkexpr(t0) )));
10903 putIReg(4, gregOfRM(modrm), mkexpr(t5));
10953 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
10959 assign( t0, unop(Iop_64to32, mkexpr(dV)) );
10960 assign( t1, unop(Iop_64to32, mkexpr(sV)) );
10962 binop( Iop_MullU32, mkexpr(t0), mkexpr(t1) ) );
10989 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
10998 assign( t0, binop( Iop_MullU32, mkexpr(d0), mkexpr(s0)) );
10999 putXMMRegLane64( gregOfRM(modrm), 0, mkexpr(t0) );
11000 assign( t1, binop( Iop_MullU32, mkexpr(d2), mkexpr(s2)) );
11001 putXMMRegLane64( gregOfRM(modrm), 1, mkexpr(t1) );
11031 assign( s1V, loadLE(Ity_V128, mkexpr(addr)) );
11037 assign( s1Hi, unop(Iop_V128HIto64, mkexpr(s1V)) );
11038 assign( s1Lo, unop(Iop_V128to64, mkexpr(s1V)) );
11039 assign( s2Hi, unop(Iop_V128HIto64, mkexpr(s2V)) );
11040 assign( s2Lo, unop(Iop_V128to64, mkexpr(s2V)) );
11045 mkIRExprVec_2( mkexpr(s1Hi), mkexpr(s2Hi))
11051 mkIRExprVec_2( mkexpr(s1Lo), mkexpr(s2Lo))
11053 assign( dV, binop(Iop_64HLtoV128, mkexpr(dHi), mkexpr(dLo))) ;
11054 putXMMReg(gregOfRM(modrm), mkexpr(dV));
11075 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11090 putXMMReg(gregOfRM(modrm), mkexpr(dV));
11115 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11122 assign( sVhi, unop(Iop_V128HIto64, mkexpr(sV)) );
11132 mkexpr(dVhi),
11133 unop(Iop_V128to64, mkexpr(sV))) );
11134 putXMMReg(gregOfRM(modrm), mkexpr(dV));
11159 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11166 assign( sVlo, unop(Iop_V128to64, mkexpr(sV)) );
11176 unop(Iop_V128HIto64, mkexpr(sV)),
11177 mkexpr(dVlo) ) );
11178 putXMMReg(gregOfRM(modrm), mkexpr(dV));
11221 assign( hi64, unop(Iop_V128HIto64, mkexpr(sV)) );
11222 assign( lo64, unop(Iop_V128to64, mkexpr(sV)) );
11225 assign( lo64r, mkexpr(lo64) );
11226 assign( hi64r, mkexpr(hi64) );
11231 assign( hi64r, mkexpr(lo64) );
11237 mkexpr(lo64),
11241 mkexpr(lo64),
11245 binop(Iop_Shl64, mkexpr(hi64),
11247 binop(Iop_Shr64, mkexpr(lo64),
11252 assign( dV, binop(Iop_64HLtoV128, mkexpr(hi64r), mkexpr(lo64r)) );
11253 putXMMReg(reg, mkexpr(dV));
11351 assign( hi64, unop(Iop_V128HIto64, mkexpr(sV)) );
11352 assign( lo64, unop(Iop_V128to64, mkexpr(sV)) );
11355 assign( lo64r, mkexpr(lo64) );
11356 assign( hi64r, mkexpr(hi64) );
11361 assign( lo64r, mkexpr(hi64) );
11367 mkexpr(hi64),
11371 mkexpr(hi64),
11375 binop(Iop_Shr64, mkexpr(lo64),
11377 binop(Iop_Shl64, mkexpr(hi64),
11383 assign( dV, binop(Iop_64HLtoV128, mkexpr(hi64r), mkexpr(lo64r)) );
11384 putXMMReg(reg, mkexpr(dV));
11586 mkexpr(addr),
11637 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11663 assign ( d0, unop(Iop_V128to64, mkexpr(sV)) );
11666 assign( d0, loadLE(Ity_I64, mkexpr(addr)) );
11672 putXMMReg( gregOfRM(modrm), binop(Iop_64HLtoV128,mkexpr(d0),mkexpr(d0)) );
11693 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11701 assign( addV, binop(Iop_Add32Fx4, mkexpr(gV), mkexpr(eV)) );
11702 assign( subV, binop(Iop_Sub32Fx4, mkexpr(gV), mkexpr(eV)) );
11728 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11736 assign( addV, binop(Iop_Add64Fx2, mkexpr(gV), mkexpr(eV)) );
11737 assign( subV, binop(Iop_Sub64Fx2, mkexpr(gV), mkexpr(eV)) );
11739 assign( a1, unop(Iop_V128HIto64, mkexpr(addV) ));
11740 assign( s0, unop(Iop_V128to64, mkexpr(subV) ));
11743 binop(Iop_64HLtoV128, mkexpr(a1), mkexpr(s0)) );
11768 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11784 mkexpr(leftV), mkexpr(rightV) ) );
11810 assign( eV, loadLE(Ity_V128, mkexpr(addr)) );
11818 assign( e1, unop(Iop_V128HIto64, mkexpr(eV) ));
11819 assign( e0, unop(Iop_V128to64, mkexpr(eV) ));
11820 assign( g1, unop(Iop_V128HIto64, mkexpr(gV) ));
11821 assign( g0, unop(Iop_V128to64, mkexpr(gV) ));
11823 assign( leftV, binop(Iop_64HLtoV128, mkexpr(e0),mkexpr(g0)) );
11824 assign( rightV, binop(Iop_64HLtoV128, mkexpr(e1),mkexpr(g1)) );
11828 mkexpr(leftV), mkexpr(rightV) ) );
11840 loadLE(Ity_V128, mkexpr(addr)) );
11878 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
11886 binop(Iop_SarN16x4, mkexpr(sV), mkU8(8)) );
11889 binop(Iop_ShlN16x4, mkexpr(sV), mkU8(8)),
11892 binop(Iop_ShrN16x4, mkexpr(dV), mkU8(8)) );
11895 binop(Iop_ShlN16x4, mkexpr(dV), mkU8(8)),
11901 binop(Iop_Mul16x4, mkexpr(sVoddsSX), mkexpr(dVoddsZX)),
11902 binop(Iop_Mul16x4, mkexpr(sVevensSX), mkexpr(dVevensZX))
11930 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
11938 binop(Iop_SarN16x8, mkexpr(sV), mkU8(8)) );
11941 binop(Iop_ShlN16x8, mkexpr(sV), mkU8(8)),
11944 binop(Iop_ShrN16x8, mkexpr(dV), mkU8(8)) );
11947 binop(Iop_ShlN16x8, mkexpr(dV), mkU8(8)),
11953 binop(Iop_Mul16x8, mkexpr(sVoddsSX), mkexpr(dVoddsZX)),
11954 binop(Iop_Mul16x8, mkexpr(sVevensSX), mkexpr(dVevensZX))
12011 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12020 binop(opCatE,mkexpr(sV),mkexpr(dV)),
12021 binop(opCatO,mkexpr(sV),mkexpr(dV))
12081 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12087 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12088 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12089 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12090 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12099 binop(opCatE,mkexpr(sHi),mkexpr(sLo)),
12100 binop(opCatO,mkexpr(sHi),mkexpr(sLo))
12103 binop(opCatE,mkexpr(dHi),mkexpr(dLo)),
12104 binop(opCatO,mkexpr(dHi),mkexpr(dLo))
12129 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12137 dis_PMULHRSW_helper( mkexpr(sV), mkexpr(dV) )
12164 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12170 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12171 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12172 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12173 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12178 dis_PMULHRSW_helper( mkexpr(sHi), mkexpr(dHi) ),
12179 dis_PMULHRSW_helper( mkexpr(sLo), mkexpr(dLo) )
12214 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12222 dis_PSIGN_helper( mkexpr(sV), mkexpr(dV), laneszB )
12260 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12266 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12267 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12268 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12269 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12274 dis_PSIGN_helper( mkexpr(sHi), mkexpr(dHi), laneszB ),
12275 dis_PSIGN_helper( mkexpr(sLo), mkexpr(dLo), laneszB )
12308 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12316 dis_PABS_helper( mkexpr(sV), laneszB )
12350 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12356 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12357 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12362 dis_PABS_helper( mkexpr(sHi), laneszB ),
12363 dis_PABS_helper( mkexpr(sLo), laneszB )
12389 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12398 assign( res, mkexpr(sV) );
12403 binop(Iop_Shr64, mkexpr(sV), mkU8(8*d32)),
12404 binop(Iop_Shl64, mkexpr(dV), mkU8(8*(8-d32))
12408 assign( res, mkexpr(dV) );
12411 assign( res, binop(Iop_Shr64, mkexpr(dV), mkU8(8*(d32-8))) );
12419 putMMXReg( gregOfRM(modrm), mkexpr(res) );
12448 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12456 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12457 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12458 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12459 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12462 assign( rHi, mkexpr(sHi) );
12463 assign( rLo, mkexpr(sLo) );
12470 assign( rHi, mkexpr(dLo) );
12471 assign( rLo, mkexpr(sHi) );
12478 assign( rHi, mkexpr(dHi) );
12479 assign( rLo, mkexpr(dLo) );
12482 assign( rHi, binop(Iop_Shr64, mkexpr(dHi), mkU8(8*(d32-16))) );
12487 assign( rLo, mkexpr(dHi) );
12491 assign( rLo, binop(Iop_Shr64, mkexpr(dHi), mkU8(8*(d32-24))) );
12502 binop(Iop_64HLtoV128, mkexpr(rHi), mkexpr(rLo))
12524 assign( sV, loadLE(Ity_I64, mkexpr(addr)) );
12537 mkexpr(dV),
12538 binop(Iop_And64, mkexpr(sV), mkU64(0x0707070707070707ULL))
12541 unop(Iop_Not64, binop(Iop_SarN8x8, mkexpr(sV), mkU8(7)))
12579 assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
12585 assign( dHi, unop(Iop_V128HIto64, mkexpr(dV)) );
12586 assign( dLo, unop(Iop_V128to64, mkexpr(dV)) );
12587 assign( sHi, unop(Iop_V128HIto64, mkexpr(sV)) );
12588 assign( sLo, unop(Iop_V128to64, mkexpr(sV)) );
12602 unop(Iop_Not64, binop(Iop_SarN8x8,mkexpr(sHi),mkU8(7))));
12607 binop(Iop_ShlN8x8,mkexpr(sHi),mkU8(4)),
12610 assign(sAnd7hi, binop(Iop_And64,mkexpr(sHi),mkexpr(sevens)));
12617 binop(Iop_Perm8x8,mkexpr(dHi),mkexpr(sAnd7hi)),
12618 mkexpr(maskBit3hi)),
12620 binop(Iop_Perm8x8,mkexpr(dLo),mkexpr(sAnd7hi)),
12621 unop(Iop_Not64,mkexpr(maskBit3hi))) ));
12623 assign(rHi, binop(Iop_And64,mkexpr(permdHi),mkexpr(mask0x80hi)) );
12629 unop(Iop_Not64, binop(Iop_SarN8x8,mkexpr(sLo),mkU8(7))));
12634 binop(Iop_ShlN8x8,mkexpr(sLo),mkU8(4)),
12637 assign(sAnd7lo, binop(Iop_And64,mkexpr(sLo),mkexpr(sevens)));
12644 binop(Iop_Perm8x8,mkexpr(dHi),mkexpr(sAnd7lo)),
12645 mkexpr(maskBit3lo)),
12647 binop(Iop_Perm8x8,mkexpr(dLo),mkexpr(sAnd7lo)),
12648 unop(Iop_Not64,mkexpr(maskBit3lo))) ));
12650 assign(rLo, binop(Iop_And64,mkexpr(permdLo),mkexpr(mask0x80lo)) );
12654 binop(Iop_64HLtoV128, mkexpr(rHi), mkexpr(rLo))
12673 assign(src, loadLE(ty, mkexpr(addr)));
12675 putIReg(sz, gregOfRM(modrm), mkexpr(dst));
12680 storeLE(mkexpr(addr), mkexpr(dst));
12724 assign( src, loadLE( isD ? Ity_F64 : Ity_F32, mkexpr(addr) ));
12737 mkU32(imm & 3), mkexpr(src)) );
12740 putXMMRegLane64F( gregOfRM(modrm), 0, mkexpr(res) );
12742 putXMMRegLane32F( gregOfRM(modrm), 0, mkexpr(res) );
12765 assign(src, loadLE(ty, mkexpr(addr)));
12772 putIReg(sz, gregOfRM(modrm), mkexpr(res));
12780 assign(src32, widenUto32(mkexpr(src)));
12781 assign(res32, widenUto32(mkexpr(res)));
12789 binop(Iop_CmpEQ32, mkexpr(res32), mkU32(0))),
12793 binop(Iop_CmpEQ32, mkexpr(src32), mkU32(0))),
12801 stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(oszacp) ));
12866 assign(t2, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t1),mkU32(0) )));
12867 assign(t3, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t1),mkU32(4) )));
12868 assign(t4, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t1),mkU32(8) )));
12870 putIReg(4, R_ESP,binop(Iop_Add32, mkexpr(t1), mkU32(12)));
12872 putSReg( R_CS, unop(Iop_32to16, mkexpr(t3)) );
12902 putIReg(4, R_ESP, mkexpr(t1));
12903 storeLE( mkexpr(t1), mkU32(guest_EIP_bbstart+delta));
12945 putIReg(4, R_ESP, mkexpr(t1));
12946 assign(t2, loadLE(Ity_I32,mkexpr(t1)));
12947 putIReg(4, R_EBP, mkexpr(t2));
12948 putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(t1), mkU32(4)) );
12981 mkIRExprVec_2( mkexpr(t1), mkU32( opc & 0xFF) )
12983 putIReg(2, R_EAX, unop(Iop_32to16, mkexpr(t2) ));
12989 binop(Iop_Shr32, mkexpr(t2), mkU8(16)),
13031 mkIRExprVec_2( mkexpr(t1), mkU32( opc & 0xFF) )
13033 putIReg(2, R_EAX, unop(Iop_32to16, mkexpr(t2) ));
13039 binop(Iop_Shr32, mkexpr(t2), mkU8(16)),
13128 putIReg(sz, (UInt)(opc - 0x40), mkexpr(t1));
13147 putIReg(sz, (UInt)(opc - 0x48), mkexpr(t1));
13409 putIReg(sz, gregOfRM(modrm), mkexpr(addr));
13430 putIReg(sz, R_EAX, loadLE(ty, mkexpr(addr)));
13443 storeLE( mkexpr(addr), getIReg(sz,R_EAX) );
13492 storeLE(mkexpr(addr), mkU(szToITy(sz), d32));
13714 assign(t1, loadLE(szToITy(sz),mkexpr(t2)));
13715 putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(t2), mkU32(sz)));
13716 putIReg(sz, opc-0x58, mkexpr(t1));
13724 assign(t1, widenUto32(loadLE(szToITy(sz),mkexpr(t2))));
13725 putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(t2), mkU32(sz)));
13744 putIReg(4,R_EAX, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32(28)) ));
13745 putIReg(4,R_ECX, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32(24)) ));
13746 putIReg(4,R_EDX, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32(20)) ));
13747 putIReg(4,R_EBX, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32(16)) ));
13749 putIReg(4,R_EBP, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32( 8)) ));
13750 putIReg(4,R_ESI, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32( 4)) ));
13751 putIReg(4,R_EDI, loadLE(Ity_I32, binop(Iop_Add32,mkexpr(t5),mkU32( 0)) ));
13754 putIReg( 4, R_ESP, binop(Iop_Add32, mkexpr(t5), mkU32(8*4)) );
13776 assign( t3, loadLE(ty, mkexpr(t1)) );
13784 putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(t1), mkU32(sz)) );
13788 storeLE( mkexpr(addr), mkexpr(t3) );
13821 putIReg(4, R_ESP, mkexpr(t2) );
13822 storeLE(mkexpr(t2),mkexpr(t1));
13837 putIReg(4, R_ESP, mkexpr(t1) );
13842 storeLE( mkexpr(t1), mkU(ty,d32) );
13851 putIReg(4, R_ESP, mkexpr(t1) );
13867 mkexpr(t2),
13876 mkexpr(t3),
13886 mkexpr(t4),
13895 storeLE( mkexpr(t1), unop(Iop_32to16,mkexpr(t5)) );
13897 storeLE( mkexpr(t1), mkexpr(t5) );
13917 assign( t5, binop(Iop_Sub32, mkexpr(t0), mkU32(8*4)) );
13920 putIReg(4, R_ESP, mkexpr(t5));
13923 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32(28)), getIReg(4,R_EAX) );
13924 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32(24)), getIReg(4,R_ECX) );
13925 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32(20)), getIReg(4,R_EDX) );
13926 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32(16)), getIReg(4,R_EBX) );
13927 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32(12)), mkexpr(t0) /*esp*/);
13928 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32( 8)), getIReg(4,R_EBP) );
13929 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32( 4)), getIReg(4,R_ESI) );
13930 storeLE( binop(Iop_Add32,mkexpr(t5),mkU32( 0)), getIReg(4,R_EDI) );
14000 assign( t1, binop(Iop_And32, mkexpr(t0),
14005 assign( t1, binop(Iop_Or32, mkexpr(t0),
14010 assign( t1, binop(Iop_Xor32, mkexpr(t0),
14019 stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(t1) ));
14032 binop(Iop_Shl32, mkexpr(t0), mkU8(31)),
14034 putIReg(1, R_EAX, unop(Iop_32to8, mkexpr(t1)) );
14170 putIReg(sz, gregOfRM(modrm), mkexpr(t1));
14171 putIReg(sz, eregOfRM(modrm), mkexpr(t2));
14179 assign( t1, loadLE(ty,mkexpr(addr)) );
14181 casLE( mkexpr(addr),
14182 mkexpr(t1), mkexpr(t2), guest_EIP_curr_instr );
14183 putIReg( sz, gregOfRM(modrm), mkexpr(t1) );
14262 mkIRExprVec_2( mkexpr(t1), mkU32(sz) )
14266 putIReg(sz, R_EAX, narrowTo( ty, mkexpr(t2) ) );
14308 mkIRExprVec_3( mkexpr(t1),
14505 putIReg(4, opc-0xC8, mkexpr(t2));
14588 Iend_LE, mkexpr(addr),
14589 mkexpr(expdHi), mkexpr(expdLo),
14590 mkexpr(dataHi), mkexpr(dataLo)
14597 binop(Iop_Xor32, mkexpr(oldHi), mkexpr(expdHi)),
14598 binop(Iop_Xor32, mkexpr(oldLo), mkexpr(expdLo))
14610 IRExpr_Mux0X( unop(Iop_1Uto8, mkexpr(success)),
14611 mkexpr(oldHi),
14612 mkexpr(expdHi)
14615 IRExpr_Mux0X( unop(Iop_1Uto8, mkexpr(success)),
14616 mkexpr(oldLo),
14617 mkexpr(expdLo)
14626 binop(Iop_And32, mkexpr(flags_old),
14630 unop(Iop_1Uto32, mkexpr(success)), mkU32(1)),
14634 stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(flags_new) ));
14889 putIReg(4, R_EDX, unop(Iop_64HIto32, mkexpr(val)));
14890 putIReg(4, R_EAX, unop(Iop_64to32, mkexpr(val)));
14929 putIReg(1, eregOfRM(modrm), mkexpr(t1));
14935 storeLE( mkexpr(addr), mkexpr(t1) );
15136 mkIRExprVec_2( mkexpr(addr),
15141 d->mAddr = mkexpr(addr);