Home | History | Annotate | Download | only in priv

Lines Matching refs:Binop

82 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
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
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;
1885 binop( Iop_Add64,
1886 binop( Iop_Add64,
1888 binop(Iop_Shl64, bind(1), bind(2))
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),
2216 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
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;
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 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) {
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 );
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 );
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 );
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 );
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 );
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) {
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) */
3943 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {