Home | History | Annotate | Download | only in priv

Lines Matching refs:Binop

84 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
972 if ((e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg1))
973 || (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1))) {
975 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
982 switch (e->Iex.Binop.op) {
1002 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
1003 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1010 switch (e->Iex.Binop.op) {
1024 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1028 switch (e->Iex.Binop.op) {
1056 ppIROp(e->Iex.Binop.op);
1062 if (e->Iex.Binop.arg2->tag == Iex_Const) {
1065 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1066 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1073 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1082 switch (e->Iex.Binop.op) {
1224 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1225 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1238 if (e->Iex.Binop.op == Iop_Max32U) {
1239 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1241 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1248 if (e->Iex.Binop.op == Iop_DivModS64to32
1249 || e->Iex.Binop.op == Iop_DivModU64to32) {
1256 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
1257 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
1260 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1273 if (e->Iex.Binop.op == Iop_32HLto64) {
1276 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1277 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1287 if (e->Iex.Binop.op == Iop_16HLto32) {
1290 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1291 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1302 if (e->Iex.Binop.op == Iop_8HLto16) {
1305 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1306 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1317 if (e->Iex.Binop.op == Iop_MullS32
1318 || e->Iex.Binop.op == Iop_MullS16
1319 || e->Iex.Binop.op == Iop_MullS8
1320 || e->Iex.Binop.op == Iop_MullU32
1321 || e->Iex.Binop.op == Iop_MullU16
1322 || e->Iex.Binop.op == Iop_MullU8) {
1325 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1326 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1329 switch (e->Iex.Binop.op) {
1349 if (e->Iex.Binop.op == Iop_CmpF64) {
1350 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1351 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1360 if (e->Iex.Binop.op == Iop_F64toI32S
1361 || e->Iex.Binop.op == Iop_F64toI64S) {
1362 Int szD = e->Iex.Binop.op==Iop_F64toI32S ? 4 : 8;
1363 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1365 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
1422 IROp opi = e->Iex.Unop.arg->Iex.Binop.op; /* inner op */
1423 IRExpr* argL = e->Iex.Unop.arg->Iex.Binop.arg1;
1424 IRExpr* argR = e->Iex.Unop.arg->Iex.Binop.arg2;
1955 binop( Iop_Add64,
1956 binop( Iop_Add64,
1958 binop(Iop_Shl64, bind(1), bind(2))
1986 && e->Iex.Binop.op == Iop_Add64
1987 && e->Iex.Binop.arg2->tag == Iex_Binop
1988 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl64
1989 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1990 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1991 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1993 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1994 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
2001 && e->Iex.Binop.op == Iop_Add64
2002 && e->Iex.Binop.arg2->tag == Iex_Const
2003 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
2004 && fitsIn32Bits(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)) {
2005 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2007 toUInt(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64),
2295 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
2319 && (e->Iex.Binop.op == Iop_CmpEQ8
2320 || e->Iex.Binop.op == Iop_CmpNE8
2321 || e->Iex.Binop.op == Iop_CasCmpEQ8
2322 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
2323 if (isZeroU8(e->Iex.Binop.arg2)) {
2324 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2326 switch (e->Iex.Binop.op) {
2332 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2333 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2338 switch (e->Iex.Binop.op) {
2348 && (e->Iex.Binop.op == Iop_CmpEQ16
2349 || e->Iex.Binop.op == Iop_CmpNE16
2350 || e->Iex.Binop.op == Iop_CasCmpEQ16
2351 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
2352 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2353 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2358 switch (e->Iex.Binop.op) {
2368 && e->Iex.Binop.op == Iop_CmpNE64
2369 && e->Iex.Binop.arg1->tag == Iex_CCall
2370 && e->Iex.Binop.arg2->tag == Iex_Const) {
2371 IRExpr* cal = e->Iex.Binop.arg1;
2372 IRExpr* con = e->Iex.Binop.arg2;
2395 && (e->Iex.Binop.op == Iop_CmpEQ64
2396 || e->Iex.Binop.op == Iop_CmpNE64
2397 || e->Iex.Binop.op == Iop_CmpLT64S
2398 || e->Iex.Binop.op == Iop_CmpLT64U
2399 || e->Iex.Binop.op == Iop_CmpLE64S
2400 || e->Iex.Binop.op == Iop_CmpLE64U
2401 || e->Iex.Binop.op == Iop_CasCmpEQ64
2402 || e->Iex.Binop.op == Iop_CasCmpNE64
2403 || e->Iex.Binop.op == Iop_ExpCmpNE64)) {
2404 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2405 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2407 switch (e->Iex.Binop.op) {
2421 && (e->Iex.Binop.op == Iop_CmpEQ32
2422 || e->Iex.Binop.op == Iop_CmpNE32
2423 || e->Iex.Binop.op == Iop_CmpLT32S
2424 || e->Iex.Binop.op == Iop_CmpLT32U
2425 || e->Iex.Binop.op == Iop_CmpLE32S
2426 || e->Iex.Binop.op == Iop_CmpLE32U
2427 || e->Iex.Binop.op == Iop_CasCmpEQ32
2428 || e->Iex.Binop.op == Iop_CasCmpNE32
2429 || e->Iex.Binop.op == Iop_ExpCmpNE32)) {
2430 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2431 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2433 switch (e->Iex.Binop.op) {
2487 switch (e->Iex.Binop.op) {
2496 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
2497 AMD64RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2498 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2517 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS128to64);
2518 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2519 iselInt128Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2532 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2533 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2584 && e->Iex.Binop.op == Iop_F64toF32) {
2589 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2590 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2616 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2618 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2625 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2886 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2888 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2895 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2970 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2972 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
2973 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
3015 switch (e->Iex.Binop.op) {
3025 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
3027 Int nNeeded = e->Iex.Binop.op==Iop_TanF64 ? 2 : 1;
3304 switch (e->Iex.Binop.op) {
3309 HReg arg = iselVecExpr(env, e->Iex.Binop.arg2);
3313 addInstr(env, (e->Iex.Binop.op == Iop_Sqrt64Fx2
3322 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3323 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3334 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3335 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3347 AMD64RI* qHi = iselIntExpr_RI(env, e->Iex.Binop.arg1);
3348 AMD64RI* qLo = iselIntExpr_RI(env, e->Iex.Binop.arg2);
3365 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3366 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3381 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3382 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3400 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3401 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3419 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3420 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3487 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3488 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3509 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3510 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3561 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3562 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3613 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3614 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3655 } /* switch (e->Iex.Binop.op) */
3888 switch (e->Iex.Binop.op) {
3895 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3896 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3913 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3914 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3963 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3964 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3986 iselDVecExpr(&gregHi, &gregLo, env, e->Iex.Binop.arg1);
3987 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
4006 *rHi = iselVecExpr(env, e->Iex.Binop.arg1);
4007 *rLo = iselVecExpr(env, e->Iex.Binop.arg2);
4040 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4041 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4118 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4119 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4173 } /* switch (e->Iex.Binop.op) */
4518 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {