Home | History | Annotate | Download | only in priv

Lines Matching refs:Binop

95 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
785 e->Iex.Binop.op==Iop_PRemC3210F64
806 if (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1)) {
808 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
815 switch (e->Iex.Binop.op) {
835 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
836 X86RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
860 switch (e->Iex.Binop.op) {
874 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
878 switch (e->Iex.Binop.op) {
900 if (e->Iex.Binop.arg2->tag == Iex_Const) {
903 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
904 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
911 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
920 if (e->Iex.Binop.op == Iop_Max32U) {
921 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
923 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
930 if (e->Iex.Binop.op == Iop_8HLto16) {
933 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
934 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
943 if (e->Iex.Binop.op == Iop_16HLto32) {
946 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
947 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
956 if (e->Iex.Binop.op == Iop_MullS16 || e->Iex.Binop.op == Iop_MullS8
957 || e->Iex.Binop.op == Iop_MullU16 || e->Iex.Binop.op == Iop_MullU8) {
960 HReg a16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
961 HReg b16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
962 Int shift = (e->Iex.Binop.op == Iop_MullS8
963 || e->Iex.Binop.op == Iop_MullU8)
965 X86ShiftOp shr_op = (e->Iex.Binop.op == Iop_MullS8
966 || e->Iex.Binop.op == Iop_MullS16)
979 if (e->Iex.Binop.op == Iop_CmpF64) {
980 Binop.arg1);
981 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
990 if (e->Iex.Binop.op == Iop_F64toI32S
991 || e->Iex.Binop.op == Iop_F64toI16S) {
992 Int sz = e->Iex.Binop.op == Iop_F64toI16S ? 2 : 4;
993 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1009 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
1422 && e->Iex.Binop.op == Iop_Add32
1423 && e->Iex.Binop.arg2->tag == Iex_Const
1424 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U32
1425 && e->Iex.Binop.arg1->tag == Iex_Binop
1426 && e->Iex.Binop.arg1->Iex.Binop.op == Iop_Add32
1427 && e->Iex.Binop.arg1->Iex.Binop.arg2->tag == Iex_Binop
1428 && e->Iex.Binop.arg1->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl32
1429 && e->Iex.Binop.arg1
1430 ->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1431 && e->Iex.Binop.arg1
1432 ->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1433 UInt shift = e->Iex.Binop.arg1
1434 ->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1435 UInt imm32 = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32;
1437 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1->Iex.Binop.arg1);
1438 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg1
1439 Binop.arg2->Iex.Binop.arg1 );
1446 && e->Iex.Binop.op == Iop_Add32
1447 && e->Iex.Binop.arg2->tag == Iex_Binop
1448 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl32
1449 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1450 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1451 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1453 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1454 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1461 && e->Iex.Binop.op == Iop_Add32
1462 && e->Iex.Binop.arg2->tag == Iex_Const
1463 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U32) {
1464 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1465 return X86AMode_IR(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32, r1);
1712 unop(Iop_CmpNEZ32, binop(Iop_And32, bind(0), bind(1))));
1727 unop(Iop_CmpNEZ32, binop(Iop_Or32, bind(0), bind(1))));
1763 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
1792 && (e->Iex.Binop.op == Iop_CmpEQ8
1793 || e->Iex.Binop.op == Iop_CmpNE8
1794 || e->Iex.Binop.op == Iop_CasCmpEQ8
1795 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
1796 if (isZeroU8(e->Iex.Binop.arg2)) {
1797 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1799 switch (e->Iex.Binop.op) {
1805 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1806 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1811 switch (e->Iex.Binop.op) {
1821 && (e->Iex.Binop.op == Iop_CmpEQ16
1822 || e->Iex.Binop.op == Iop_CmpNE16
1823 || e->Iex.Binop.op == Iop_CasCmpEQ16
1824 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
1825 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1826 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1831 switch (e->Iex.Binop.op) {
1840 && (e->Iex.Binop.op == Iop_CmpEQ32
1841 || e->Iex.Binop.op == Iop_CmpNE32
1842 || e->Iex.Binop.op == Iop_CmpLT32S
1843 || e->Iex.Binop.op == Iop_CmpLT32U
1844 || e->Iex.Binop.op == Iop_CmpLE32S
1845 || e->Iex.Binop.op == Iop_CmpLE32U
1846 || e->Iex.Binop.op == Iop_CasCmpEQ32
1847 || e->Iex.Binop.op == Iop_CasCmpNE32)) {
1848 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1849 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1851 switch (e->Iex.Binop.op) {
1864 && (e->Iex.Binop.op == Iop_CmpNE64
1865 || e->Iex.Binop.op == Iop_CmpEQ64)) {
1869 iselInt64Expr( &hi1, &lo1, env, e->Iex.Binop.arg1 );
1870 iselInt64Expr( &hi2, &lo2, env, e->Iex.Binop.arg2 );
1876 switch (e->Iex.Binop.op) {
2053 switch (e->Iex.Binop.op) {
2062 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS32);
2063 X86RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2064 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2083 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
2084 X86RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2085 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2103 X86AluOp op = e->Iex.Binop.op==Iop_Or64 ? Xalu_OR
2104 : e->Iex.Binop.op==Iop_And64 ? Xalu_AND
2106 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2107 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2119 if (e->Iex.Binop.arg2->tag == Iex_Const) {
2121 ULong w64 = e->Iex.Binop.arg2->Iex.Const.con->Ico.U64;
2127 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64);
2128 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2142 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2145 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2146 if (e->Iex.Binop.op==Iop_Add64) {
2160 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2161 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2189 rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2190 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2231 rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2232 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2254 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2275 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2402 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2405 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2442 X86RMI* y = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2444 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2586 unop(Iop_CmpwNEZ64,binop(Iop_Or64,bind(0),bind(1))));
2758 && e->Iex.Binop.op == Iop_F64toF32) {
2763 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2764 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2793 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2794 HReg rf = iselFltExpr(env, e->Iex.Binop.arg2);
2801 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2947 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2948 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2955 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2966 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2969 iselInt64Expr( &rHi, &rLo, env, e->Iex.Binop.arg2);
2974 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2989 switch (e->Iex.Binop.op) {
2999 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
3350 switch (e->Iex.Binop.op) {
3354 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3355 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3367 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3371 iselInt64Expr(&srcIhi, &srcIlo, env, e->Iex.Binop.arg2);
3391 iselInt64Expr(&r1, &r0, env, e->Iex.Binop.arg2);
3395 iselInt64Expr(&r3, &r2, env, e->Iex.Binop.arg1);
3416 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3417 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3436 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3437 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3456 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3457 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3475 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3476 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3544 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3545 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3568 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3569 X86RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3587 } /* switch (e->Iex.Binop.op) */
3783 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add32) {