Home | History | Annotate | Download | only in priv

Lines Matching refs:Binop

96 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
786 e->Iex.Binop.op==Iop_PRemC3210F64
807 if (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1)) {
809 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
816 switch (e->Iex.Binop.op) {
836 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
837 X86RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
861 switch (e->Iex.Binop.op) {
875 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
879 switch (e->Iex.Binop.op) {
901 if (e->Iex.Binop.arg2->tag == Iex_Const) {
904 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
905 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
912 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
921 if (e->Iex.Binop.op == Iop_Max32U) {
922 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
924 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
931 if (e->Iex.Binop.op == Iop_8HLto16) {
934 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
935 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
944 if (e->Iex.Binop.op == Iop_16HLto32) {
947 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
948 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
957 if (e->Iex.Binop.op == Iop_MullS16 || e->Iex.Binop.op == Iop_MullS8
958 || e->Iex.Binop.op == Iop_MullU16 || e->Iex.Binop.op == Iop_MullU8) {
961 HReg a16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
962 HReg b16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
963 Int shift = (e->Iex.Binop.op == Iop_MullS8
964 || e->Iex.Binop.op == Iop_MullU8)
966 X86ShiftOp shr_op = (e->Iex.Binop.op == Iop_MullS8
967 || e->Iex.Binop.op == Iop_MullS16)
980 if (e->Iex.Binop.op == Iop_CmpF64) {
981 Binop.arg1);
982 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
991 if (e->Iex.Binop.op == Iop_F64toI32S
992 || e->Iex.Binop.op == Iop_F64toI16S) {
993 Int sz = e->Iex.Binop.op == Iop_F64toI16S ? 2 : 4;
994 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1010 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
1423 && e->Iex.Binop.op == Iop_Add32
1424 && e->Iex.Binop.arg2->tag == Iex_Const
1425 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U32
1426 && e->Iex.Binop.arg1->tag == Iex_Binop
1427 && e->Iex.Binop.arg1->Iex.Binop.op == Iop_Add32
1428 && e->Iex.Binop.arg1->Iex.Binop.arg2->tag == Iex_Binop
1429 && e->Iex.Binop.arg1->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl32
1430 && e->Iex.Binop.arg1
1431 ->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1432 && e->Iex.Binop.arg1
1433 ->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1434 UInt shift = e->Iex.Binop.arg1
1435 ->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1436 UInt imm32 = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32;
1438 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1->Iex.Binop.arg1);
1439 Binop.arg1
1440 ->Iex.Binop.arg2->Iex.Binop.arg1 );
1447 && e->Iex.Binop.op == Iop_Add32
1448 && e->Iex.Binop.arg2->tag == Iex_Binop
1449 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl32
1450 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1451 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1452 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1454 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1455 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1462 && e->Iex.Binop.op == Iop_Add32
1463 && e->Iex.Binop.arg2->tag == Iex_Const
1464 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U32) {
1465 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1466 return X86AMode_IR(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32, r1);
1713 unop(Iop_CmpNEZ32, binop(Iop_And32, bind(0), bind(1))));
1728 unop(Iop_CmpNEZ32, binop(Iop_Or32, bind(0), bind(1))));
1764 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
1793 && (e->Iex.Binop.op == Iop_CmpEQ8
1794 || e->Iex.Binop.op == Iop_CmpNE8
1795 || e->Iex.Binop.op == Iop_CasCmpEQ8
1796 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
1797 if (isZeroU8(e->Iex.Binop.arg2)) {
1798 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1800 switch (e->Iex.Binop.op) {
1806 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1807 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1812 switch (e->Iex.Binop.op) {
1822 && (e->Iex.Binop.op == Iop_CmpEQ16
1823 || e->Iex.Binop.op == Iop_CmpNE16
1824 || e->Iex.Binop.op == Iop_CasCmpEQ16
1825 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
1826 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1827 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1832 switch (e->Iex.Binop.op) {
1842 && e->Iex.Binop.op == Iop_CmpNE32
1843 && e->Iex.Binop.arg1->tag == Iex_CCall
1844 && e->Iex.Binop.arg2->tag == Iex_Const) {
1845 IRExpr* cal = e->Iex.Binop.arg1;
1846 IRExpr* con = e->Iex.Binop.arg2;
1860 && (e->Iex.Binop.op == Iop_CmpEQ32
1861 || e->Iex.Binop.op == Iop_CmpNE32
1862 || e->Iex.Binop.op == Iop_CmpLT32S
1863 || e->Iex.Binop.op == Iop_CmpLT32U
1864 || e->Iex.Binop.op == Iop_CmpLE32S
1865 || e->Iex.Binop.op == Iop_CmpLE32U
1866 || e->Iex.Binop.op == Iop_CasCmpEQ32
1867 || e->Iex.Binop.op == Iop_CasCmpNE32)) {
1868 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1869 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1871 switch (e->Iex.Binop.op) {
1884 && (e->Iex.Binop.op == Iop_CmpNE64
1885 || e->Iex.Binop.op == Iop_CmpEQ64)) {
1889 iselInt64Expr( &hi1, &lo1, env, e->Iex.Binop.arg1 );
1890 iselInt64Expr( &hi2, &lo2, env, e->Iex.Binop.arg2 );
1896 switch (e->Iex.Binop.op) {
2073 switch (e->Iex.Binop.op) {
2082 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS32);
2083 X86RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2084 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2103 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
2104 X86RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2105 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2123 X86AluOp op = e->Iex.Binop.op==Iop_Or64 ? Xalu_OR
2124 : e->Iex.Binop.op==Iop_And64 ? Xalu_AND
2126 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2127 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2139 if (e->Iex.Binop.arg2->tag == Iex_Const) {
2141 ULong w64 = e->Iex.Binop.arg2->Iex.Const.con->Ico.U64;
2147 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64);
2148 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2162 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2165 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2166 if (e->Iex.Binop.op==Iop_Add64) {
2180 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2181 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2209 rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2210 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2251 rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2252 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2274 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2295 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2426 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2429 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2466 X86RMI* y = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2468 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2610 unop(Iop_CmpwNEZ64,binop(Iop_Or64,bind(0),bind(1))));
2782 && e->Iex.Binop.op == Iop_F64toF32) {
2787 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2788 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2817 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2818 HReg rf = iselFltExpr(env, e->Iex.Binop.arg2);
2825 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2971 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2972 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2979 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2990 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2993 iselInt64Expr( &rHi, &rLo, env, e->Iex.Binop.arg2);
2998 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
3013 switch (e->Iex.Binop.op) {
3023 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
3375 switch (e->Iex.Binop.op) {
3379 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3380 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3392 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3396 iselInt64Expr(&srcIhi, &srcIlo, env, e->Iex.Binop.arg2);
3416 iselInt64Expr(&r1, &r0, env, e->Iex.Binop.arg2);
3420 iselInt64Expr(&r3, &r2, env, e->Iex.Binop.arg1);
3441 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3442 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3461 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3462 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3481 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3482 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3500 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3501 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3569 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3570 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3593 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3594 X86RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3621 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3622 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3665 } /* switch (e->Iex.Binop.op) */
3861 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add32) {