Lines Matching refs:Iex
97 && e->Iex.Const.con->tag == Ico_U8
98 && e->Iex.Const.con->Ico.U8 == 0;
298 && e->Iex.Const.con->tag == Ico_U64
299 && e->Iex.Const.con->Ico.U64 == 0ULL;
305 && e->Iex.Const.con->tag == Ico_U32
306 && e->Iex.Const.con->Ico.U32 == 0;
381 vassert(e->Iex.Const.con->tag == Ico_U64);
382 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
385 AMD64RMI_Imm(toUInt(e->Iex.Const.con->Ico.U64)),
389 return AMD64Instr_Imm64(e->Iex.Const.con->Ico.U64, dst);
394 HReg src = lookupIRTemp(env, e->Iex.RdTmp.tmp);
399 vassert(e->Iex.Get.ty == Ity_I64);
403 AMD64AMode_IR(e->Iex.Get.offset,
409 && e->Iex.Unop.op == Iop_32Uto64
410 && e->Iex.Unop.arg->tag == Iex_RdTmp) {
411 HReg src = lookupIRTemp(env, e->Iex.Unop.arg->Iex.RdTmp.tmp);
542 && guard->Iex.Const.con->tag == Ico_U1
543 && guard->Iex.Const.con->Ico.U1 == True) {
639 && guard->Iex.Const.con->tag == Ico_U1
640 && guard->Iex.Const.con->Ico.U1 == True) {
934 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
940 AMD64AMode* amode = iselIntExpr_AMode ( env, e->Iex.Load.addr );
943 if (e->Iex.Load.end != Iend_LE)
973 if ((e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg1))
974 || (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1))) {
976 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
983 switch (e->Iex.Binop.op) {
1003 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
1004 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1011 switch (e->Iex.Binop.op) {
1025 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1029 switch (e->Iex.Binop.op) {
1057 ppIROp(e->Iex.Binop.op);
1063 if (e->Iex.Binop.arg2->tag == Iex_Const) {
1066 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1067 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1074 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1083 switch (e->Iex.Binop.op) {
1225 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1226 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1239 if (e->Iex.Binop.op == Iop_Max32U) {
1240 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1242 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1249 if (e->Iex.Binop.op == Iop_DivModS64to32
1250 || e->Iex.Binop.op == Iop_DivModU64to32) {
1257 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
1258 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
1261 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1274 if (e->Iex.Binop.op == Iop_32HLto64) {
1277 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1278 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1288 if (e->Iex.Binop.op == Iop_16HLto32) {
1291 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1292 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1303 if (e->Iex.Binop.op == Iop_8HLto16) {
1306 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1307 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1318 if (e->Iex.Binop.op == Iop_MullS32
1319 || e->Iex.Binop.op == Iop_MullS16
1320 || e->Iex.Binop.op == Iop_MullS8
1321 || e->Iex.Binop.op == Iop_MullU32
1322 || e->Iex.Binop.op == Iop_MullU16
1323 || e->Iex.Binop.op == Iop_MullU8) {
1326 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1327 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1330 switch (e->Iex.Binop.op) {
1350 if (e->Iex.Binop.op == Iop_CmpF64) {
1351 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1352 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1361 if (e->Iex.Binop.op == Iop_F64toI32S
1362 || e->Iex.Binop.op == Iop_F64toI64S) {
1363 Int szD = e->Iex.Binop.op==Iop_F64toI32S ? 4 : 8;
1364 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1366 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
1422 if (e->Iex.Unop.op == Iop_32Uto64 && e->Iex.Unop.arg->tag == Iex_Binop) {
1423 IROp opi = e->Iex.Unop.arg->Iex.Binop.op; /* inner op */
1424 IRExpr* argL = e->Iex.Unop.arg->Iex.Binop.arg1;
1425 IRExpr* argR = e->Iex.Unop.arg->Iex.Binop.arg2;
1449 switch (e->Iex.Unop.op) {
1453 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1454 addInstr(env, AMD64Instr_MovxLQ(e->Iex.Unop.op == Iop_32Sto64,
1460 iselInt128Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1465 iselInt128Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1474 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1475 Bool srcIs16 = toBool( e->Iex.Unop.op==Iop_16Uto32
1476 || e->Iex.Unop.op==Iop_16Uto64 );
1489 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1490 Bool srcIs16 = toBool( e->Iex.Unop.op==Iop_16Sto32
1491 || e->Iex.Unop.op==Iop_16Sto64 );
1503 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1512 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1514 switch (e->Iex.Unop.op) {
1528 AMD64CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
1538 AMD64CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
1547 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1557 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1568 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1580 HReg pre = iselIntExpr_R(env, e->Iex.Unop.arg);
1596 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1605 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1616 Int off = e->Iex.Unop.op==Iop_V128HIto64 ? -8 : -16;
1618 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1631 iselDVecExpr(&vHi, &vLo, env, e->Iex.Unop.arg);
1636 switch (e->Iex.Unop.op) {
1660 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
1675 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
1690 return iselIntExpr_R(env, e->Iex.Unop.arg);
1698 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
1717 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1748 switch (e->Iex.Unop.op) {
1765 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
1783 AMD64AMode_IR(e->Iex.Get.offset,
1793 AMD64AMode_IR(e->Iex.Get.offset,hregAMD64_RBP()),
1803 env, e->Iex.GetI.descr,
1804 e->Iex.GetI.ix, e->Iex.GetI.bias );
1820 vassert(ty == e->Iex.CCall.retty);
1824 if (e->Iex.CCall.retty != Ity_I64 && e->Iex.CCall.retty != Ity_I32)
1831 e->Iex.CCall.cee, e->Iex.CCall.retty, e->Iex.CCall.args );
1838 if (e->Iex.CCall.retty == Ity_I64)
1851 addInstr(env, AMD64Instr_Imm64(e->Iex.Const.con->Ico.U64, r));
1863 && typeOfIRExpr(env->type_env,e->Iex.ITE.cond) == Ity_I1) {
1864 HReg r1 = iselIntExpr_R(env, e->Iex.ITE.iftrue);
1865 AMD64RM* r0 = iselIntExpr_RM(env, e->Iex.ITE.iffalse);
1868 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
1877 IRTriop *triop = e->Iex.Triop.details;
1970 && imm8->Iex.Const.con->tag == Ico_U8
1971 && imm8->Iex.Const.con->Ico.U8 < 4
1974 && simm32->Iex.Const.con->tag == Ico_U64
1975 && fitsIn32Bits(simm32->Iex.Const.con->Ico.U64)) {
1976 UInt shift = imm8->Iex.Const.con->Ico.U8;
1977 UInt offset = toUInt(simm32->Iex.Const.con->Ico.U64);
1987 && e->Iex.Binop.op == Iop_Add64
1988 && e->Iex.Binop.arg2->tag == Iex_Binop
1989 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl64
1990 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1991 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1992 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1994 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1995 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
2002 && e->Iex.Binop.op == Iop_Add64
2003 && e->Iex.Binop.arg2->tag == Iex_Const
2004 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
2005 && fitsIn32Bits(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)) {
2006 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2008 toUInt(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64),
2055 switch (e->Iex.Const.con->tag) {
2057 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
2058 return AMD64RMI_Imm(toUInt(e->Iex.Const.con->Ico.U64));
2062 return AMD64RMI_Imm(e->Iex.Const.con->Ico.U32); break;
2064 return AMD64RMI_Imm(0xFFFF & e->Iex.Const.con->Ico.U16); break;
2066 return AMD64RMI_Imm(0xFF & e->Iex.Const.con->Ico.U8); break;
2074 return AMD64RMI_Mem(AMD64AMode_IR(e->Iex.Get.offset,
2080 && e->Iex.Load.end == Iend_LE) {
2081 AMD64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2124 switch (e->Iex.Const.con->tag) {
2126 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
2127 return AMD64RI_Imm(toUInt(e->Iex.Const.con->Ico.U64));
2131 return AMD64RI_Imm(e->Iex.Const.con->Ico.U32);
2133 return AMD64RI_Imm(0xFFFF & e->Iex.Const.con->Ico.U16);
2135 return AMD64RI_Imm(0xFF & e->Iex.Const.con->Ico.U8);
2180 return AMD64RM_Mem(AMD64AMode_IR(e->Iex.Get.offset,
2216 HReg r64 = lookupIRTemp(env, e->Iex.RdTmp.tmp);
2226 vassert(e->Iex.Const.con->tag == Ico_U1);
2227 vassert(e->Iex.Const.con->Ico.U1 == True
2228 || e->Iex.Const.con->Ico.U1 == False);
2232 return e->Iex.Const.con->Ico.U1 ? Acc_Z : Acc_NZ;
2236 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_Not1) {
2238 return 1 ^ iselCondCode(env, e->Iex.Unop.arg);
2244 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_64to1) {
2245 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2253 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_32to1) {
2254 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2263 && e->Iex.Unop.op == Iop_CmpNEZ8) {
2264 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2273 && e->Iex.Unop.op == Iop_CmpNEZ16) {
2274 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2283 && e->Iex.Unop.op == Iop_CmpNEZ32) {
2284 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2309 && e->Iex.Unop.op == Iop_CmpNEZ64) {
2310 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2320 && (e->Iex.Binop.op == Iop_CmpEQ8
2321 || e->Iex.Binop.op == Iop_CmpNE8
2322 || e->Iex.Binop.op == Iop_CasCmpEQ8
2323 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
2324 if (isZeroU8(e->Iex.Binop.arg2)) {
2325 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2327 switch (e->Iex.Binop.op) {
2333 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2334 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2339 switch (e->Iex.Binop.op) {
2349 && (e->Iex.Binop.op == Iop_CmpEQ16
2350 || e->Iex.Binop.op == Iop_CmpNE16
2351 || e->Iex.Binop.op == Iop_CasCmpEQ16
2352 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
2353 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2354 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2359 switch (e->Iex.Binop.op) {
2369 && e->Iex.Binop.op == Iop_CmpNE64
2370 && e->Iex.Binop.arg1->tag == Iex_CCall
2371 && e->Iex.Binop.arg2->tag == Iex_Const) {
2372 IRExpr* cal = e->Iex.Binop.arg1;
2373 IRExpr* con = e->Iex.Binop.arg2;
2376 vassert(cal->Iex.CCall.retty == Ity_I64); /* else ill-typed IR */
2377 vassert(con->Iex.Const.con->tag == Ico_U64);
2382 cal->Iex.CCall.cee,
2383 cal->Iex.CCall.retty, cal->Iex.CCall.args );
2388 addInstr(env, AMD64Instr_Imm64(con->Iex.Const.con->Ico.U64, tmp));
2396 && (e->Iex.Binop.op == Iop_CmpEQ64
2397 || e->Iex.Binop.op == Iop_CmpNE64
2398 || e->Iex.Binop.op == Iop_CmpLT64S
2399 || e->Iex.Binop.op == Iop_CmpLT64U
2400 || e->Iex.Binop.op == Iop_CmpLE64S
2401 || e->Iex.Binop.op == Iop_CmpLE64U
2402 || e->Iex.Binop.op == Iop_CasCmpEQ64
2403 || e->Iex.Binop.op == Iop_CasCmpNE64
2404 || e->Iex.Binop.op == Iop_ExpCmpNE64)) {
2405 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2406 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2408 switch (e->Iex.Binop.op) {
2422 && (e->Iex.Binop.op == Iop_CmpEQ32
2423 || e->Iex.Binop.op == Iop_CmpNE32
2424 || e->Iex.Binop.op == Iop_CmpLT32S
2425 || e->Iex.Binop.op == Iop_CmpLT32U
2426 || e->Iex.Binop.op == Iop_CmpLE32S
2427 || e->Iex.Binop.op == Iop_CmpLE32U
2428 || e->Iex.Binop.op == Iop_CasCmpEQ32
2429 || e->Iex.Binop.op == Iop_CasCmpNE32
2430 || e->Iex.Binop.op == Iop_ExpCmpNE32)) {
2431 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2432 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2434 switch (e->Iex.Binop.op) {
2482 lookupIRTempPair( rHi, rLo, env, e->Iex.RdTmp.tmp);
2488 switch (e->Iex.Binop.op) {
2497 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
2498 AMD64RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2499 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2518 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS128to64);
2519 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2520 iselInt128Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2533 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2534 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2572 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
2575 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
2578 vassert(e->Iex.Load.ty == Ity_F32);
2579 am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2585 && e->Iex.Binop.op == Iop_F64toF32) {
2590 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2591 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2598 AMD64AMode* am = AMD64AMode_IR( e->Iex.Get.offset,
2606 && e->Iex.Unop.op == Iop_ReinterpI32asF32) {
2610 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2617 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2619 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2626 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2641 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_NegF32) {
2648 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2660 if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_MAddF32) {
2661 IRQop *qop = e->Iex.Qop.details;
2760 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
2771 if (e->Iex.Const.con->tag == Ico_F64) {
2772 u.f64 = e->Iex.Const.con->Ico.F64;
2774 else if (e->Iex.Const.con->tag == Ico_F64i) {
2775 u.u64 = e->Iex.Const.con->Ico.F64i;
2790 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
2793 vassert(e->Iex.Load.ty == Ity_F64);
2794 am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2800 AMD64AMode* am = AMD64AMode_IR( e->Iex.Get.offset,
2810 env, e->Iex.GetI.descr,
2811 e->Iex.GetI.ix, e->Iex.GetI.bias );
2818 IRTriop *triop = e->Iex.Triop.details;
2839 if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_MAddF64) {
2840 IRQop *qop = e->Iex.Qop.details;
2887 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2889 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2896 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2911 IRTriop *triop = e->Iex.Triop.details;
2971 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2973 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
2974 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2980 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_I32StoF64) {
2982 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2989 && (e->Iex.Unop.op == Iop_NegF64
2990 || e->Iex.Unop.op == Iop_AbsF64)) {
2997 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
3005 if (e->Iex.Unop.op == Iop_NegF64)
3016 switch (e->Iex.Binop.op) {
3026 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
3028 Int nNeeded = e->Iex.Binop.op==Iop_TanF64 ? 2 : 1;
3047 switch (e->Iex.Unop.op) {
3050 //.. HReg ri = iselIntExpr_R(env, e->Iex.Unop.arg);
3064 AMD64RI* src = iselIntExpr_RI(env, e->Iex.Unop.arg);
3076 f32 = iselFltExpr(env, e->Iex.Unop.arg);
3089 vassert(typeOfIRExpr(env->type_env,e->Iex.ITE.cond) == Ity_I1);
3090 r1 = iselDblExpr(env, e->Iex.ITE.iftrue);
3091 r0 = iselDblExpr(env, e->Iex.ITE.iffalse);
3094 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
3131 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
3140 AMD64AMode_IR(e->Iex.Get.offset, hregAMD64_RBP())
3146 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
3148 AMD64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr);
3155 vassert(e->Iex.Const.con->tag == Ico_V128);
3156 switch (e->Iex.Const.con->Ico.V128) {
3167 (e->Iex.Const.con->Ico.V128 >> 8) & 0xFF
3170 (e->Iex.Const.con->Ico.V128 >> 0) & 0xFF
3181 switch (e->Iex.Unop.op) {
3184 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3204 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3219 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3234 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3243 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3260 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3276 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3286 AMD64RI* ri = iselIntExpr_RI(env, e->Iex.Unop.arg);
3295 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Unop.arg);
3305 iselDVecExpr(&vHi, &vLo, env, e->Iex.Unop.arg);
3306 return (e->Iex.Unop.op == Iop_V256toV128_1) ? vHi : vLo;
3311 } /* switch (e->Iex.Unop.op) */
3315 switch (e->Iex.Binop.op) {
3320 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3321 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3332 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3333 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3345 AMD64RI* qHi = iselIntExpr_RI(env, e->Iex.Binop.arg1);
3346 AMD64RI* qLo = iselIntExpr_RI(env, e->Iex.Binop.arg2);
3363 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3364 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3379 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3380 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3398 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3399 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3417 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3418 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3485 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3486 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3507 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3508 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3559 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3560 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3611 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3612 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3653 } /* switch (e->Iex.Binop.op) */
3657 IRTriop *triop = e->Iex.Triop.details;
3698 HReg r1 = iselVecExpr(env, e->Iex.ITE.iftrue);
3699 HReg r0 = iselVecExpr(env, e->Iex.ITE.iffalse);
3702 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
3746 lookupIRTempPair( rHi, rLo, env, e->Iex.RdTmp.tmp);
3754 AMD64AMode* am0 = AMD64AMode_IR(e->Iex.Get.offset + 0, rbp);
3755 AMD64AMode* am16 = AMD64AMode_IR(e->Iex.Get.offset + 16, rbp);
3766 HReg rA = iselIntExpr_R(env, e->Iex.Load.addr);
3777 vassert(e->Iex.Const.con->tag == Ico_V256);
3778 switch (e->Iex.Const.con->Ico.V256) {
3793 switch (e->Iex.Unop.op) {
3797 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3809 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3823 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3839 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3864 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3882 } /* switch (e->Iex.Unop.op) */
3886 switch (e->Iex.Binop.op) {
3893 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3894 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3911 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3912 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3961 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3962 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3984 iselDVecExpr(&gregHi, &gregLo, env, e->Iex.Binop.arg1);
3985 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
4004 *rHi = iselVecExpr(env, e->Iex.Binop.arg1);
4005 *rLo = iselVecExpr(env, e->Iex.Binop.arg2);
4038 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4039 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4116 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4117 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4171 } /* switch (e->Iex.Binop.op) */
4175 IRTriop *triop = e->Iex.Triop.details;
4228 if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_64x4toV256) {
4236 AMD64RI* q3 = iselIntExpr_RI(env, e->Iex.Qop.details->arg1);
4237 AMD64RI* q2 = iselIntExpr_RI(env, e->Iex.Qop.details->arg2);
4238 AMD64RI* q1 = iselIntExpr_RI(env, e->Iex.Qop.details->arg3);
4239 AMD64RI* q0 = iselIntExpr_RI(env, e->Iex.Qop.details->arg4);
4255 iselDVecExpr(&r1Hi, &r1Lo, env, e->Iex.ITE.iftrue);
4256 iselDVecExpr(&r0Hi, &r0Lo, env, e->Iex.ITE.iffalse);
4261 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
4445 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {
4772 IRConst* cdst = next->Iex.Const.con;