Lines Matching defs:binop
84 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
973 if ((e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg1))
974 || (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1))) {
976 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
983 switch (e->Iex.Binop.op) {
1003 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
1004 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1011 switch (e->Iex.Binop.op) {
1025 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1029 switch (e->Iex.Binop.op) {
1057 ppIROp(e->Iex.Binop.op);
1063 if (e->Iex.Binop.arg2->tag == Iex_Const) {
1066 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1067 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1074 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1083 switch (e->Iex.Binop.op) {
1225 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1226 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1239 if (e->Iex.Binop.op == Iop_Max32U) {
1240 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1242 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1249 if (e->Iex.Binop.op == Iop_DivModS64to32
1250 || e->Iex.Binop.op == Iop_DivModU64to32) {
1257 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
1258 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
1261 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1274 if (e->Iex.Binop.op == Iop_32HLto64) {
1277 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1278 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1288 if (e->Iex.Binop.op == Iop_16HLto32) {
1291 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1292 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1303 if (e->Iex.Binop.op == Iop_8HLto16) {
1306 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1307 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1318 if (e->Iex.Binop.op == Iop_MullS32
1319 || e->Iex.Binop.op == Iop_MullS16
1320 || e->Iex.Binop.op == Iop_MullS8
1321 || e->Iex.Binop.op == Iop_MullU32
1322 || e->Iex.Binop.op == Iop_MullU16
1323 || e->Iex.Binop.op == Iop_MullU8) {
1326 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1327 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1330 switch (e->Iex.Binop.op) {
1350 if (e->Iex.Binop.op == Iop_CmpF64) {
1351 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1352 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1361 if (e->Iex.Binop.op == Iop_F64toI32S
1362 || e->Iex.Binop.op == Iop_F64toI64S) {
1363 Int szD = e->Iex.Binop.op==Iop_F64toI32S ? 4 : 8;
1364 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1366 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
1423 IROp opi = e->Iex.Unop.arg->Iex.Binop.op; /* inner op */
1424 IRExpr* argL = e->Iex.Unop.arg->Iex.Binop.arg1;
1425 IRExpr* argR = e->Iex.Unop.arg->Iex.Binop.arg2;
1956 binop( Iop_Add64,
1957 binop( Iop_Add64,
1959 binop(Iop_Shl64, bind(1), bind(2))
1987 && e->Iex.Binop.op == Iop_Add64
1988 && e->Iex.Binop.arg2->tag == Iex_Binop
1989 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl64
1990 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1991 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1992 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1994 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1995 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
2002 && e->Iex.Binop.op == Iop_Add64
2003 && e->Iex.Binop.arg2->tag == Iex_Const
2004 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
2005 && fitsIn32Bits(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)) {
2006 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2008 toUInt(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64),
2296 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
2320 && (e->Iex.Binop.op == Iop_CmpEQ8
2321 || e->Iex.Binop.op == Iop_CmpNE8
2322 || e->Iex.Binop.op == Iop_CasCmpEQ8
2323 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
2324 if (isZeroU8(e->Iex.Binop.arg2)) {
2325 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2327 switch (e->Iex.Binop.op) {
2333 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2334 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2339 switch (e->Iex.Binop.op) {
2349 && (e->Iex.Binop.op == Iop_CmpEQ16
2350 || e->Iex.Binop.op == Iop_CmpNE16
2351 || e->Iex.Binop.op == Iop_CasCmpEQ16
2352 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
2353 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2354 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2359 switch (e->Iex.Binop.op) {
2369 && e->Iex.Binop.op == Iop_CmpNE64
2370 && e->Iex.Binop.arg1->tag == Iex_CCall
2371 && e->Iex.Binop.arg2->tag == Iex_Const) {
2372 IRExpr* cal = e->Iex.Binop.arg1;
2373 IRExpr* con = e->Iex.Binop.arg2;
2396 && (e->Iex.Binop.op == Iop_CmpEQ64
2397 || e->Iex.Binop.op == Iop_CmpNE64
2398 || e->Iex.Binop.op == Iop_CmpLT64S
2399 || e->Iex.Binop.op == Iop_CmpLT64U
2400 || e->Iex.Binop.op == Iop_CmpLE64S
2401 || e->Iex.Binop.op == Iop_CmpLE64U
2402 || e->Iex.Binop.op == Iop_CasCmpEQ64
2403 || e->Iex.Binop.op == Iop_CasCmpNE64
2404 || e->Iex.Binop.op == Iop_ExpCmpNE64)) {
2405 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2406 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2408 switch (e->Iex.Binop.op) {
2422 && (e->Iex.Binop.op == Iop_CmpEQ32
2423 || e->Iex.Binop.op == Iop_CmpNE32
2424 || e->Iex.Binop.op == Iop_CmpLT32S
2425 || e->Iex.Binop.op == Iop_CmpLT32U
2426 || e->Iex.Binop.op == Iop_CmpLE32S
2427 || e->Iex.Binop.op == Iop_CmpLE32U
2428 || e->Iex.Binop.op == Iop_CasCmpEQ32
2429 || e->Iex.Binop.op == Iop_CasCmpNE32
2430 || e->Iex.Binop.op == Iop_ExpCmpNE32)) {
2431 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2432 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2434 switch (e->Iex.Binop.op) {
2488 switch (e->Iex.Binop.op) {
2497 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
2498 AMD64RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2499 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2518 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS128to64);
2519 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2520 iselInt128Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2533 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2534 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2585 && e->Iex.Binop.op == Iop_F64toF32) {
2590 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2591 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2617 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2619 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2626 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2887 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2889 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2896 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2971 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2973 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
2974 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
3016 switch (e->Iex.Binop.op) {
3026 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
3028 Int nNeeded = e->Iex.Binop.op==Iop_TanF64 ? 2 : 1;
3315 switch (e->Iex.Binop.op) {
3320 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3321 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3332 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3333 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3345 AMD64RI* qHi = iselIntExpr_RI(env, e->Iex.Binop.arg1);
3346 AMD64RI* qLo = iselIntExpr_RI(env, e->Iex.Binop.arg2);
3363 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3364 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3379 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3380 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3398 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3399 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3417 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3418 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3485 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3486 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3507 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3508 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3559 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3560 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3611 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3612 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3653 } /* switch (e->Iex.Binop.op) */
3886 switch (e->Iex.Binop.op) {
3893 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3894 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3911 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3912 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3961 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3962 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3984 iselDVecExpr(&gregHi, &gregLo, env, e->Iex.Binop.arg1);
3985 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
4004 *rHi = iselVecExpr(env, e->Iex.Binop.arg1);
4005 *rLo = iselVecExpr(env, e->Iex.Binop.arg2);
4038 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4039 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4116 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4117 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4171 } /* switch (e->Iex.Binop.op) */
4445 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {