Lines Matching defs:binop
96 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
904 e->Iex.Binop.op==Iop_PRemC3210F64
925 if (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1)) {
927 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
934 switch (e->Iex.Binop.op) {
954 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
955 X86RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
979 switch (e->Iex.Binop.op) {
993 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
997 switch (e->Iex.Binop.op) {
1019 if (e->Iex.Binop.arg2->tag == Iex_Const) {
1022 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1023 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1030 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1039 if (e->Iex.Binop.op == Iop_Max32U) {
1040 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1042 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1049 if (e->Iex.Binop.op == Iop_8HLto16) {
1052 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1053 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1062 if (e->Iex.Binop.op == Iop_16HLto32) {
1065 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1066 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1075 if (e->Iex.Binop.op == Iop_MullS16 || e->Iex.Binop.op == Iop_MullS8
1076 || e->Iex.Binop.op == Iop_MullU16 || e->Iex.Binop.op == Iop_MullU8) {
1079 HReg a16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1080 HReg b16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1081 Int shift = (e->Iex.Binop.op == Iop_MullS8
1082 || e->Iex.Binop.op == Iop_MullU8)
1084 X86ShiftOp shr_op = (e->Iex.Binop.op == Iop_MullS8
1085 || e->Iex.Binop.op == Iop_MullS16)
1098 if (e->Iex.Binop.op == Iop_CmpF64) {
1099 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1100 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1109 if (e->Iex.Binop.op == Iop_F64toI32S
1110 || e->Iex.Binop.op == Iop_F64toI16S) {
1111 Int sz = e->Iex.Binop.op == Iop_F64toI16S ? 2 : 4;
1112 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1128 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
1564 && e->Iex.Binop.op == Iop_Add32
1565 && e->Iex.Binop.arg2->tag == Iex_Const
1566 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U32
1567 && e->Iex.Binop.arg1->tag == Iex_Binop
1568 && e->Iex.Binop.arg1->Iex.Binop.op == Iop_Add32
1569 && e->Iex.Binop.arg1->Iex.Binop.arg2->tag == Iex_Binop
1570 && e->Iex.Binop.arg1->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl32
1571 && e->Iex.Binop.arg1
1572 ->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1573 && e->Iex.Binop.arg1
1574 ->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1575 UInt shift = e->Iex.Binop.arg1
1576 ->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1577 UInt imm32 = e->Iex.Binop.arg2->Iex.Const.con->Ico.U32;
1579 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1->Iex.Binop.arg1);
1580 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg1
1581 ->Iex.Binop.arg2->Iex.Binop.arg1 );
1588 && e->Iex.Binop.op == Iop_Add32
1589 && e->Iex.Binop.arg2->tag == Iex_Binop
1590 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl32
1591 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1592 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1593 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1595 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1596 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1603 && e->Iex.Binop.op == Iop_Add32
1604 && e->Iex.Binop.arg2->tag == Iex_Const
1605 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U32) {
1606 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1607 return X86AMode_IR(e->Iex.Binop.arg2->Iex.Const.con->Ico.U32, r1);
1854 unop(Iop_CmpNEZ32, binop(Iop_And32, bind(0), bind(1))));
1869 unop(Iop_CmpNEZ32, binop(Iop_Or32, bind(0), bind(1))));
1905 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
1934 && (e->Iex.Binop.op == Iop_CmpEQ8
1935 || e->Iex.Binop.op == Iop_CmpNE8
1936 || e->Iex.Binop.op == Iop_CasCmpEQ8
1937 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
1938 if (isZeroU8(e->Iex.Binop.arg2)) {
1939 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1941 switch (e->Iex.Binop.op) {
1947 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1948 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1953 switch (e->Iex.Binop.op) {
1963 && (e->Iex.Binop.op == Iop_CmpEQ16
1964 || e->Iex.Binop.op == Iop_CmpNE16
1965 || e->Iex.Binop.op == Iop_CasCmpEQ16
1966 || e->Iex.Binop.op == Iop_CasCmpNE16
1967 || e->Iex.Binop.op == Iop_ExpCmpNE16)) {
1968 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1969 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1974 switch (e->Iex.Binop.op) {
1987 && e->Iex.Binop.op == Iop_CmpNE32
1988 && e->Iex.Binop.arg1->tag == Iex_CCall
1989 && e->Iex.Binop.arg2->tag == Iex_Const) {
1990 IRExpr* cal = e->Iex.Binop.arg1;
1991 IRExpr* con = e->Iex.Binop.arg2;
2013 && (e->Iex.Binop.op == Iop_CmpEQ32
2014 || e->Iex.Binop.op == Iop_CmpNE32
2015 || e->Iex.Binop.op == Iop_CmpLT32S
2016 || e->Iex.Binop.op == Iop_CmpLT32U
2017 || e->Iex.Binop.op == Iop_CmpLE32S
2018 || e->Iex.Binop.op == Iop_CmpLE32U
2019 || e->Iex.Binop.op == Iop_CasCmpEQ32
2020 || e->Iex.Binop.op == Iop_CasCmpNE32
2021 || e->Iex.Binop.op == Iop_ExpCmpNE32)) {
2022 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2023 X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2025 switch (e->Iex.Binop.op) {
2039 && (e->Iex.Binop.op == Iop_CmpNE64
2040 || e->Iex.Binop.op == Iop_CmpEQ64)) {
2044 iselInt64Expr( &hi1, &lo1, env, e->Iex.Binop.arg1 );
2045 iselInt64Expr( &hi2, &lo2, env, e->Iex.Binop.arg2 );
2051 switch (e->Iex.Binop.op) {
2185 switch (e->Iex.Binop.op) {
2194 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS32);
2195 X86RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2196 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2215 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
2216 X86RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2217 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2235 X86AluOp op = e->Iex.Binop.op==Iop_Or64 ? Xalu_OR
2236 : e->Iex.Binop.op==Iop_And64 ? Xalu_AND
2238 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2239 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2251 if (e->Iex.Binop.arg2->tag == Iex_Const) {
2253 ULong w64 = e->Iex.Binop.arg2->Iex.Const.con->Ico.U64;
2259 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64);
2260 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2274 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2277 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2278 if (e->Iex.Binop.op==Iop_Add64) {
2292 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2293 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2321 rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2322 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2363 rAmt = iselIntExpr_R(env, e->Iex.Binop.arg2);
2364 iselInt64Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2386 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
2407 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2538 iselInt64Expr(&yHi, &yLo, env, e->Iex.Binop.arg2);
2541 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2579 X86RMI* y = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2581 iselInt64Expr(&xHi, &xLo, env, e->Iex.Binop.arg1);
2724 unop(Iop_CmpwNEZ64,binop(Iop_Or64,bind(0),bind(1))));
2905 && e->Iex.Binop.op == Iop_F64toF32) {
2910 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2911 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2940 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2941 HReg rf = iselFltExpr(env, e->Iex.Binop.arg2);
2948 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
3095 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
3096 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
3103 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
3114 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
3117 iselInt64Expr( &rHi, &rLo, env, e->Iex.Binop.arg2);
3122 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
3137 switch (e->Iex.Binop.op) {
3147 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
3504 switch (e->Iex.Binop.op) {
3508 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3509 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3521 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3525 iselInt64Expr(&srcIhi, &srcIlo, env, e->Iex.Binop.arg2);
3545 iselInt64Expr(&r1, &r0, env, e->Iex.Binop.arg2);
3549 iselInt64Expr(&r3, &r2, env, e->Iex.Binop.arg1);
3566 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3567 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3582 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3583 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3602 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3603 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3621 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3622 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3690 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3691 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3714 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3715 X86RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3742 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3743 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3787 } /* switch (e->Iex.Binop.op) */
4028 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add32) {