Home | History | Annotate | Download | only in priv

Lines Matching refs:Iex

275           && e->Iex.Const.con->tag == Ico_U64
276 && e->Iex.Const.con->Ico.U64 == 0ULL;
282 && e->Iex.Const.con->tag == Ico_U32
283 && e->Iex.Const.con->Ico.U32 == 0;
389 vassert(e->Iex.Const.con->tag == Ico_U64);
390 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
393 AMD64RMI_Imm(toUInt(e->Iex.Const.con->Ico.U64)),
397 return AMD64Instr_Imm64(e->Iex.Const.con->Ico.U64, dst);
402 HReg src = lookupIRTemp(env, e->Iex.RdTmp.tmp);
407 vassert(e->Iex.Get.ty == Ity_I64);
411 AMD64AMode_IR(e->Iex.Get.offset,
417 && e->Iex.Unop.op == Iop_32Uto64
418 && e->Iex.Unop.arg->tag == Iex_RdTmp) {
419 HReg src = lookupIRTemp(env, e->Iex.Unop.arg->Iex.RdTmp.tmp);
520 && guard->Iex.Const.con->tag == Ico_U1
521 && guard->Iex.Const.con->Ico.U1 == True) {
595 && guard->Iex.Const.con->tag == Ico_U1
596 && guard->Iex.Const.con->Ico.U1 == True) {
875 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
881 AMD64AMode* amode = iselIntExpr_AMode ( env, e->Iex.Load.addr );
884 if (e->Iex.Load.end != Iend_LE)
914 if ((e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg1))
915 || (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1))) {
917 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
924 switch (e->Iex.Binop.op) {
944 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
945 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
952 switch (e->Iex.Binop.op) {
966 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
970 switch (e->Iex.Binop.op) {
998 ppIROp(e->Iex.Binop.op);
1004 if (e->Iex.Binop.arg2->tag == Iex_Const) {
1007 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1008 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1015 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1024 switch (e->Iex.Binop.op) {
1166 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1167 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1179 if (e->Iex.Binop.op == Iop_Max32U) {
1180 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1182 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1189 if (e->Iex.Binop.op == Iop_DivModS64to32
1190 || e->Iex.Binop.op == Iop_DivModU64to32) {
1197 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
1198 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
1201 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1214 if (e->Iex.Binop.op == Iop_32HLto64) {
1217 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1218 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1228 if (e->Iex.Binop.op == Iop_16HLto32) {
1231 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1232 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1243 if (e->Iex.Binop.op == Iop_8HLto16) {
1246 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1247 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1258 if (e->Iex.Binop.op == Iop_MullS32
1259 || e->Iex.Binop.op == Iop_MullS16
1260 || e->Iex.Binop.op == Iop_MullS8
1261 || e->Iex.Binop.op == Iop_MullU32
1262 || e->Iex.Binop.op == Iop_MullU16
1263 || e->Iex.Binop.op == Iop_MullU8) {
1266 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1267 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1270 switch (e->Iex.Binop.op) {
1290 if (e->Iex.Binop.op == Iop_CmpF64) {
1291 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1292 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1301 if (e->Iex.Binop.op == Iop_F64toI32S
1302 || e->Iex.Binop.op == Iop_F64toI64S) {
1303 Int szD = e->Iex.Binop.op==Iop_F64toI32S ? 4 : 8;
1304 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1306 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
1312 //.. if (e->Iex.Binop.op == Iop_F64toI32 || e->Iex.Binop.op == Iop_F64toI16) {
1313 //.. Int sz = e->Iex.Binop.op == Iop_F64toI16 ? 2 : 4;
1314 //.. HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1330 //.. set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
1355 //.. if (e->Iex.Binop.op == Iop_PRemC3210F64
1356 //.. || e->Iex.Binop.op == Iop_PRem1C3210F64) {
1359 //.. HReg srcL = iselDblExpr(env, e->Iex.Binop.arg1);
1360 //.. HReg srcR = iselDblExpr(env, e->Iex.Binop.arg2);
1362 //.. e->Iex.Binop.op==Iop_PRemC3210F64
1424 if (e->Iex.Unop.op == Iop_32Uto64 && e->Iex.Unop.arg->tag == Iex_Binop) {
1425 IROp opi = e->Iex.Unop.arg->Iex.Binop.op; /* inner op */
1426 IRExpr* argL = e->Iex.Unop.arg->Iex.Binop.arg1;
1427 IRExpr* argR = e->Iex.Unop.arg->Iex.Binop.arg2;
1451 switch (e->Iex.Unop.op) {
1455 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1456 addInstr(env, AMD64Instr_MovxLQ(e->Iex.Unop.op == Iop_32Sto64,
1462 iselInt128Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1467 iselInt128Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1476 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1477 Bool srcIs16 = toBool( e->Iex.Unop.op==Iop_16Uto32
1478 || e->Iex.Unop.op==Iop_16Uto64 );
1491 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1492 Bool srcIs16 = toBool( e->Iex.Unop.op==Iop_16Sto32
1493 || e->Iex.Unop.op==Iop_16Sto64 );
1505 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1512 //.. iselInt64Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1517 //.. iselInt64Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1524 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1526 switch (e->Iex.Unop.op) {
1540 AMD64CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
1550 AMD64CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
1559 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1569 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1580 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1592 HReg pre = iselIntExpr_R(env, e->Iex.Unop.arg);
1608 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1617 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1627 Int off = e->Iex.Unop.op==Iop_V128HIto64 ? 8 : 0;
1629 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1646 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
1661 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
1676 return iselIntExpr_R(env, e->Iex.Unop.arg);
1683 switch (e->Iex.Unop.op) {
1700 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
1717 AMD64AMode_IR(e->Iex.Get.offset,
1727 AMD64AMode_IR(e->Iex.Get.offset,hregAMD64_RBP()),
1737 env, e->Iex.GetI.descr,
1738 e->Iex.GetI.ix, e->Iex.GetI.bias );
1754 vassert(ty == e->Iex.CCall.retty);
1758 if (e->Iex.CCall.retty != Ity_I64 && e->Iex.CCall.retty != Ity_I32)
1762 doHelperCall( env, False, NULL, e->Iex.CCall.cee, e->Iex.CCall.args );
1766 if (e->Iex.CCall.retty == Ity_I64)
1779 addInstr(env, AMD64Instr_Imm64(e->Iex.Const.con->Ico.U64, r));
1791 && typeOfIRExpr(env->type_env,e->Iex.Mux0X.cond) == Ity_I8) {
1793 HReg rX = iselIntExpr_R(env, e->Iex.Mux0X.exprX);
1794 AMD64RM* r0 = iselIntExpr_RM(env, e->Iex.Mux0X.expr0);
1797 r8 = iselIntExpr_R(env, e->Iex.Mux0X.cond);
1809 if (e->Iex.Triop.op == Iop_PRemC3210F64
1810 || e->Iex.Triop.op == Iop_PRem1C3210F64) {
1812 HReg arg1 = iselDblExpr(env, e->Iex.Triop.arg2);
1813 HReg arg2 = iselDblExpr(env, e->Iex.Triop.arg3);
1825 switch (e->Iex.Triop.op) {
1899 && imm8->Iex.Const.con->tag == Ico_U8
1900 && imm8->Iex.Const.con->Ico.U8 < 4
1903 && simm32->Iex.Const.con->tag == Ico_U64
1904 && fitsIn32Bits(simm32->Iex.Const.con->Ico.U64)) {
1905 UInt shift = imm8->Iex.Const.con->Ico.U8;
1906 UInt offset = toUInt(simm32->Iex.Const.con->Ico.U64);
1916 && e->Iex.Binop.op == Iop_Add64
1917 && e->Iex.Binop.arg2->tag == Iex_Binop
1918 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl64
1919 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1920 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1921 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1923 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1924 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1931 && e->Iex.Binop.op == Iop_Add64
1932 && e->Iex.Binop.arg2->tag == Iex_Const
1933 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
1934 && fitsIn32Bits(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)) {
1935 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1937 toUInt(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64),
1984 switch (e->Iex.Const.con->tag) {
1986 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
1987 return AMD64RMI_Imm(toUInt(e->Iex.Const.con->Ico.U64));
1991 return AMD64RMI_Imm(e->Iex.Const.con->Ico.U32); break;
1993 return AMD64RMI_Imm(0xFFFF & e->Iex.Const.con->Ico.U16); break;
1995 return AMD64RMI_Imm(0xFF & e->Iex.Const.con->Ico.U8); break;
2003 return AMD64RMI_Mem(AMD64AMode_IR(e->Iex.Get.offset,
2009 && e->Iex.Load.end == Iend_LE) {
2010 AMD64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2053 switch (e->Iex.Const.con->tag) {
2055 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
2056 return AMD64RI_Imm(toUInt(e->Iex.Const.con->Ico.U64));
2060 return AMD64RI_Imm(e->Iex.Const.con->Ico.U32);
2062 return AMD64RI_Imm(0xFFFF & e->Iex.Const.con->Ico.U16);
2064 return AMD64RI_Imm(0xFF & e->Iex.Const.con->Ico.U8);
2109 return AMD64RM_Mem(AMD64AMode_IR(e->Iex.Get.offset,
2145 HReg r64 = lookupIRTemp(env, e->Iex.RdTmp.tmp);
2155 vassert(e->Iex.Const.con->tag == Ico_U1);
2156 vassert(e->Iex.Const.con->Ico.U1 == True
2157 || e->Iex.Const.con->Ico.U1 == False);
2161 return e->Iex.Const.con->Ico.U1 ? Acc_Z : Acc_NZ;
2165 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_Not1) {
2167 return 1 ^ iselCondCode(env, e->Iex.Unop.arg);
2173 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_64to1) {
2174 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2183 && e->Iex.Unop.op == Iop_CmpNEZ8) {
2184 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2193 && e->Iex.Unop.op == Iop_CmpNEZ16) {
2194 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2203 && e->Iex.Unop.op == Iop_CmpNEZ32) {
2204 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2229 && e->Iex.Unop.op == Iop_CmpNEZ64) {
2230 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2240 && (e->Iex.Binop.op == Iop_CmpEQ8
2241 || e->Iex.Binop.op == Iop_CmpNE8
2242 || e->Iex.Binop.op == Iop_CasCmpEQ8
2243 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
2244 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2245 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2250 switch (e->Iex.Binop.op) {
2259 && (e->Iex.Binop.op == Iop_CmpEQ16
2260 || e->Iex.Binop.op == Iop_CmpNE16
2261 || e->Iex.Binop.op == Iop_CasCmpEQ16
2262 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
2263 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2264 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2269 switch (e->Iex.Binop.op) {
2279 && e->Iex.Binop.op == Iop_CmpNE64
2280 && e->Iex.Binop.arg1->tag == Iex_CCall
2281 && e->Iex.Binop.arg2->tag == Iex_Const) {
2282 IRExpr* cal = e->Iex.Binop.arg1;
2283 IRExpr* con = e->Iex.Binop.arg2;
2286 vassert(cal->Iex.CCall.retty == Ity_I64); /* else ill-typed IR */
2287 vassert(con->Iex.Const.con->tag == Ico_U64);
2289 doHelperCall( env, False, NULL, cal->Iex.CCall.cee, cal->Iex.CCall.args );
2290 addInstr(env, AMD64Instr_Imm64(con->Iex.Const.con->Ico.U64, tmp));
2298 && (e->Iex.Binop.op == Iop_CmpEQ64
2299 || e->Iex.Binop.op == Iop_CmpNE64
2300 || e->Iex.Binop.op == Iop_CmpLT64S
2301 || e->Iex.Binop.op == Iop_CmpLT64U
2302 || e->Iex.Binop.op == Iop_CmpLE64S
2303 || e->Iex.Binop.op == Iop_CmpLE64U
2304 || e->Iex.Binop.op == Iop_CasCmpEQ64
2305 || e->Iex.Binop.op == Iop_CasCmpNE64)) {
2306 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2307 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2309 switch (e->Iex.Binop.op) {
2322 && (e->Iex.Binop.op == Iop_CmpEQ32
2323 Iex.Binop.op == Iop_CmpNE32
2324 || e->Iex.Binop.op == Iop_CmpLT32S
2325 || e->Iex.Binop.op == Iop_CmpLT32U
2326 || e->Iex.Binop.op == Iop_CmpLE32S
2327 || e->Iex.Binop.op == Iop_CmpLE32U
2328 || e->Iex.Binop.op == Iop_CasCmpEQ32
2329 || e->Iex.Binop.op == Iop_CasCmpNE32)) {
2330 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2331 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2333 switch (e->Iex.Binop.op) {
2381 //.. ULong w64 = e->Iex.Const.con->Ico.U64;
2386 //.. vassert(e->Iex.Const.con->tag == Ico_U64);
2396 lookupIRTemp128( rHi, rLo, env, e->Iex.RdTmp.tmp);
2404 //.. vassert(e->Iex.LDle.ty == Ity_I64);
2407 //.. am0 = iselIntExpr_AMode(env, e->Iex.LDle.addr);
2418 //.. X86AMode* am = X86AMode_IR(e->Iex.Get.offset, hregX86_EBP());
2432 //.. = genGuestArrayOffset( env, e->Iex.GetI.descr,
2433 //.. e->Iex.GetI.ix, e->Iex.GetI.bias );
2449 //.. iselInt64Expr(&e0Hi, &e0Lo, env, e->Iex.Mux0X.expr0);
2450 //.. iselInt64Expr(&eXHi, &eXLo, env, e->Iex.Mux0X.exprX);
2453 //.. r8 = iselIntExpr_R(env, e->Iex.Mux0X.cond);
2466 switch (e->Iex.Binop.op) {
2475 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
2476 AMD64RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2477 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2496 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS128to64);
2497 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2498 iselInt128Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2511 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2512 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2522 //.. X86AluOp op = e->Iex.Binop.op==Iop_Or64 ? Xalu_OR
2523 //.. : e->Iex.Binop.op==Iop_And64 ? Xalu_AND
2525 //.. iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2528 //.. iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2542 //.. iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2545 //.. iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2546 //.. if (e->Iex.Binop.op==Iop_Add64) {
2560 //.. *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2561 //.. *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2589 //.. rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2590 //.. iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2632 //.. rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2633 //.. iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2656 //.. HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2677 //.. set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2708 //.. switch (e->Iex.Unop.op) {
2714 //.. HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2727 //.. HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2739 //.. X86CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
2754 //.. iselInt64Expr(&sHi, &sLo, env, e->Iex.Unop.arg);
2776 //.. doHelperCall( env, False, NULL, e->Iex.CCall.cee, e->Iex.CCall.args );
2815 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
2818 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
2821 vassert(e->Iex.Load.ty == Ity_F32);
2822 am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2828 && e->Iex.Binop.op == Iop_F64toF32) {
2833 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2834 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2841 AMD64AMode* am = AMD64AMode_IR( e->Iex.Get.offset,
2849 && e->Iex.Unop.op == Iop_ReinterpI32asF32) {
2853 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2860 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2862 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2869 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2936 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
2947 if (e->Iex.Const.con->tag == Ico_F64) {
2948 u.f64 = e->Iex.Const.con->Ico.F64;
2950 else if (e->Iex.Const.con->tag == Ico_F64i) {
2951 u.u64 = e->Iex.Const.con->Ico.F64i;
2966 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
2969 vassert(e->Iex.Load.ty == Ity_F64);
2970 am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2976 AMD64AMode* am = AMD64AMode_IR( e->Iex.Get.offset,
2986 env, e->Iex.GetI.descr,
2987 e->Iex.GetI.ix, e->Iex.GetI.bias );
2995 switch (e->Iex.Triop.op) {
3004 HReg argL = iselDblExpr(env, e->Iex.Triop.arg2);
3005 HReg argR = iselDblExpr(env, e->Iex.Triop.arg3);
3014 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
3016 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
3023 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
3039 && (e->Iex.Triop.op == Iop_ScaleF64
3040 || e->Iex.Triop.op == Iop_AtanF64
3041 || e->Iex.Triop.op == Iop_Yl2xF64
3042 || e->Iex.Triop.op == Iop_Yl2xp1F64
3043 || e->Iex.Triop.op == Iop_PRemF64
3044 || e->Iex.Triop.op == Iop_PRem1F64)
3047 HReg arg1 = iselDblExpr(env, e->Iex.Triop.arg2);
3048 HReg arg2 = iselDblExpr(env, e->Iex.Triop.arg3);
3050 Bool arg2first = toBool(e->Iex.Triop.op == Iop_ScaleF64
3051 || e->Iex.Triop.op == Iop_PRemF64
3052 || e->Iex.Triop.op == Iop_PRem1F64);
3068 switch (e->Iex.Triop.op) {
3097 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
3099 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
3100 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
3106 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_I32StoF64) {
3108 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
3115 && (e->Iex.Unop.op == Iop_NegF64
3116 || e->Iex.Unop.op == Iop_AbsF64)) {
3123 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
3131 if (e->Iex.Unop.op == Iop_NegF64)
3142 switch (e->Iex.Binop.op) {
3152 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
3154 Int nNeeded = e->Iex.Binop.op==Iop_TanF64 ? 2 : 1;
3161 if (e->Iex.Binop.op==Iop_TanF64) {
3172 switch (e->Iex.Unop.op) {
3175 //.. HReg ri = iselIntExpr_R(env, e->Iex.Unop.arg);
3189 AMD64RI* src = iselIntExpr_RI(env, e->Iex.Unop.arg);
3201 f32 = iselFltExpr(env, e->Iex.Unop.arg);
3214 vassert(typeOfIRExpr(env->type_env,e->Iex.Mux0X.cond) == Ity_I8);
3215 r8 = iselIntExpr_R(env, e->Iex.Mux0X.cond);
3216 rX = iselDblExpr(env, e->Iex.Mux0X.exprX);
3217 r0 = iselDblExpr(env, e->Iex.Mux0X.expr0);
3257 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
3266 AMD64AMode_IR(e->Iex.Get.offset, hregAMD64_RBP())
3272 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
3274 AMD64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr);
3281 vassert(e->Iex.Const.con->tag == Ico_V128);
3282 switch (e->Iex.Const.con->Ico.V128) {
3293 (e->Iex.Const.con->Ico.V128 >> 8) & 0xFF
3296 (e->Iex.Const.con->Ico.V128 >> 0) & 0xFF
3307 switch (e->Iex.Unop.op) {
3310 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3330 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3345 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3360 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3371 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3388 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3406 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3416 AMD64RI* ri = iselIntExpr_RI(env, e->Iex.Unop.arg);
3425 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Unop.arg);
3434 } /* switch (e->Iex.Unop.op) */
3438 switch (e->Iex.Binop.op) {
3442 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3443 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3453 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3454 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3466 addInstr(env, AMD64Instr_Push(iselIntExpr_RMI(env, e->Iex.Binop.arg1)));
3467 addInstr(env, AMD64Instr_Push(iselIntExpr_RMI(env, e->Iex.Binop.arg2)));
3485 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3486 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3505 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3506 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3524 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3525 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3543 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3544 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3611 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3612 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3633 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3634 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3683 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3684 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3734 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3735 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3775 } /* switch (e->Iex.Binop.op) */
3779 HReg r8 = iselIntExpr_R(env, e->Iex.Mux0X.cond);
3780 HReg rX = iselVecExpr(env, e->Iex.Mux0X.exprX);
3781 HReg r0 = iselVecExpr(env, e->Iex.Mux0X.expr0);
3943 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {