Home | History | Annotate | Download | only in priv

Lines Matching refs:Binop

82 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
871 if ((e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg1))
872 || (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1))) {
874 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
881 switch (e->Iex.Binop.op) {
901 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
902 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
909 switch (e->Iex.Binop.op) {
923 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
927 switch (e->Iex.Binop.op) {
955 ppIROp(e->Iex.Binop.op);
961 if (e->Iex.Binop.arg2->tag == Iex_Const) {
964 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
965 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
972 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
981 switch (e->Iex.Binop.op) {
1123 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1124 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1136 if (e->Iex.Binop.op == Iop_Max32U) {
1137 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1139 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1146 if (e->Iex.Binop.op == Iop_DivModS64to32
1147 || e->Iex.Binop.op == Iop_DivModU64to32) {
1154 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
1155 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
1158 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1171 if (e->Iex.Binop.op == Iop_32HLto64) {
1174 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1175 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1185 if (e->Iex.Binop.op == Iop_16HLto32) {
1188 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1189 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1200 if (e->Iex.Binop.op == Iop_8HLto16) {
1203 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1204 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1215 if (e->Iex.Binop.op == Iop_MullS32
1216 || e->Iex.Binop.op == Iop_MullS16
1217 || e->Iex.Binop.op == Iop_MullS8
1218 || e->Iex.Binop.op == Iop_MullU32
1219 || e->Iex.Binop.op == Iop_MullU16
1220 || e->Iex.Binop.op == Iop_MullU8) {
1223 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1224 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1227 switch (e->Iex.Binop.op) {
1247 if (e->Iex.Binop.op == Iop_CmpF64) {
1248 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1249 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1258 if (e->Iex.Binop.op == Iop_F64toI32S
1259 || e->Iex.Binop.op == Iop_F64toI64S) {
1260 Int szD = e->Iex.Binop.op==Iop_F64toI32S ? 4 : 8;
1261 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1263 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
1320 IROp opi = e->Iex.Unop.arg->Iex.Binop.op; /* inner op */
1321 IRExpr* argL = e->Iex.Unop.arg->Iex.Binop.arg1;
1322 IRExpr* argR = e->Iex.Unop.arg->Iex.Binop.arg2;
1797 binop( Iop_Add64,
1798 binop( Iop_Add64,
1800 binop(Iop_Shl64, bind(1), bind(2))
1828 && e->Iex.Binop.op == Iop_Add64
1829 && e->Iex.Binop.arg2->tag == Iex_Binop
1830 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl64
1831 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1832 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1833 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1835 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1836 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
1843 && e->Iex.Binop.op == Iop_Add64
1844 && e->Iex.Binop.arg2->tag == Iex_Const
1845 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
1846 && fitsIn32Bits(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)) {
1847 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1849 toUInt(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64),
2137 unop(Iop_CmpNEZ64, binop(Iop_Or64, bind(0), bind(1))));
2161 && (e->Iex.Binop.op == Iop_CmpEQ8
2162 || e->Iex.Binop.op == Iop_CmpNE8
2163 || e->Iex.Binop.op == Iop_CasCmpEQ8
2164 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
2165 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2166 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2171 switch (e->Iex.Binop.op) {
2180 && (e->Iex.Binop.op == Iop_CmpEQ16
2181 || e->Iex.Binop.op == Iop_CmpNE16
2182 || e->Iex.Binop.op == Iop_CasCmpEQ16
2183 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
2184 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2185 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2190 switch (e->Iex.Binop.op) {
2200 && e->Iex.Binop.op == Iop_CmpNE64
2201 && e->Iex.Binop.arg1->tag == Iex_CCall
2202 && e->Iex.Binop.arg2->tag == Iex_Const) {
2203 IRExpr* cal = e->Iex.Binop.arg1;
2204 IRExpr* con = e->Iex.Binop.arg2;
2219 && (e->Iex.Binop.op == Iop_CmpEQ64
2220 || e->Iex.Binop.op == Iop_CmpNE64
2221 || e->Iex.Binop.op == Iop_CmpLT64S
2222 || e->Iex.Binop.op == Iop_CmpLT64U
2223 || e->Iex.Binop.op == Iop_CmpLE64S
2224 || e->Iex.Binop.op == Iop_CmpLE64U
2225 || e->Iex.Binop.op == Iop_CasCmpEQ64
2226 || e->Iex.Binop.op == Iop_CasCmpNE64)) {
2227 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2228 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2230 switch (e->Iex.Binop.op) {
2243 && (e->Iex.Binop.op == Iop_CmpEQ32
2244 || e->Iex.Binop.op == Iop_CmpNE32
2245 || e->Iex.Binop.op == Iop_CmpLT32S
2246 || e->Iex.Binop.op == Iop_CmpLT32U
2247 || e->Iex.Binop.op == Iop_CmpLE32S
2248 || e->Iex.Binop.op == Iop_CmpLE32U
2249 || e->Iex.Binop.op == Iop_CasCmpEQ32
2250 || e->Iex.Binop.op == Iop_CasCmpNE32)) {
2251 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2252 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2254 switch (e->Iex.Binop.op) {
2307 switch (e->Iex.Binop.op) {
2316 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
2317 AMD64RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2318 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2337 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS128to64);
2338 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2339 iselInt128Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2352 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2353 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2404 && e->Iex.Binop.op == Iop_F64toF32) {
2409 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2410 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2436 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2438 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2445 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2591 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2593 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2600 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2675 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2677 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
2678 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2720 switch (e->Iex.Binop.op) {
2730 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2732 Int nNeeded = e->Iex.Binop.op==Iop_TanF64 ? 2 : 1;
2739 if (e->Iex.Binop.op==Iop_TanF64) {
3019 switch (e->Iex.Binop.op) {
3024 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3025 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3036 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3037 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3049 AMD64RI* qHi = iselIntExpr_RI(env, e->Iex.Binop.arg1);
3050 AMD64RI* qLo = iselIntExpr_RI(env, e->Iex.Binop.arg2);
3071 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3072 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3091 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3092 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3110 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3111 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3129 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3130 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3197 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3198 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3219 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3220 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3271 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3272 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3322 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3323 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3363 } /* switch (e->Iex.Binop.op) */
3553 switch (e->Iex.Binop.op) {
3564 Binop.arg1);
3565 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3586 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3587 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3605 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3606 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3619 *rHi = iselVecExpr(env, e->Iex.Binop.arg1);
3620 *rLo = iselVecExpr(env, e->Iex.Binop.arg2);
3626 } /* switch (e->Iex.Binop.op) */
3830 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {