Lines Matching full:iex
97 && e->Iex.Const.con->tag == Ico_U8
98 && e->Iex.Const.con->Ico.U8 == 0;
297 && e->Iex.Const.con->tag == Ico_U64
298 && e->Iex.Const.con->Ico.U64 == 0ULL;
304 && e->Iex.Const.con->tag == Ico_U32
305 && e->Iex.Const.con->Ico.U32 == 0;
380 vassert(e->Iex.Const.con->tag == Ico_U64);
381 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
384 AMD64RMI_Imm(toUInt(e->Iex.Const.con->Ico.U64)),
388 return AMD64Instr_Imm64(e->Iex.Const.con->Ico.U64, dst);
393 HReg src = lookupIRTemp(env, e->Iex.RdTmp.tmp);
398 vassert(e->Iex.Get.ty == Ity_I64);
402 AMD64AMode_IR(e->Iex.Get.offset,
408 && e->Iex.Unop.op == Iop_32Uto64
409 && e->Iex.Unop.arg->tag == Iex_RdTmp) {
410 HReg src = lookupIRTemp(env, e->Iex.Unop.arg->Iex.RdTmp.tmp);
541 && guard->Iex.Const.con->tag == Ico_U1
542 && guard->Iex.Const.con->Ico.U1 == True) {
638 && guard->Iex.Const.con->tag == Ico_U1
639 && guard->Iex.Const.con->Ico.U1 == True) {
933 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
939 AMD64AMode* amode = iselIntExpr_AMode ( env, e->Iex.Load.addr );
942 if (e->Iex.Load.end != Iend_LE)
972 if ((e->Iex.Binop.op == Iop_Sub64 && isZeroU64(e->Iex.Binop.arg1))
973 || (e->Iex.Binop.op == Iop_Sub32 && isZeroU32(e->Iex.Binop.arg1))) {
975 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg2);
982 switch (e->Iex.Binop.op) {
1002 HReg reg = iselIntExpr_R(env, e->Iex.Binop.arg1);
1003 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
1010 switch (e->Iex.Binop.op) {
1024 HReg regL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1028 switch (e->Iex.Binop.op) {
1056 ppIROp(e->Iex.Binop.op);
1062 if (e->Iex.Binop.arg2->tag == Iex_Const) {
1065 vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
1066 nshift = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1073 HReg regR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1082 switch (e->Iex.Binop.op) {
1224 HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
1225 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
1238 if (e->Iex.Binop.op == Iop_Max32U) {
1239 HReg src1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1241 HReg src2 = iselIntExpr_R(env, e->Iex.Binop.arg2);
1248 if (e->Iex.Binop.op == Iop_DivModS64to32
1249 || e->Iex.Binop.op == Iop_DivModU64to32) {
1256 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS64to32);
1257 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
1260 HReg left64 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1273 if (e->Iex.Binop.op == Iop_32HLto64) {
1276 HReg hi32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1277 HReg lo32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1287 if (e->Iex.Binop.op == Iop_16HLto32) {
1290 HReg hi16s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1291 HReg lo16s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1302 if (e->Iex.Binop.op == Iop_8HLto16) {
1305 HReg hi8s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1306 HReg lo8s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1317 if (e->Iex.Binop.op == Iop_MullS32
1318 || e->Iex.Binop.op == Iop_MullS16
1319 || e->Iex.Binop.op == Iop_MullS8
1320 || e->Iex.Binop.op == Iop_MullU32
1321 || e->Iex.Binop.op == Iop_MullU16
1322 || e->Iex.Binop.op == Iop_MullU8) {
1325 HReg a32s = iselIntExpr_R(env, e->Iex.Binop.arg1);
1326 HReg b32s = iselIntExpr_R(env, e->Iex.Binop.arg2);
1329 switch (e->Iex.Binop.op) {
1349 if (e->Iex.Binop.op == Iop_CmpF64) {
1350 HReg fL = iselDblExpr(env, e->Iex.Binop.arg1);
1351 HReg fR = iselDblExpr(env, e->Iex.Binop.arg2);
1360 if (e->Iex.Binop.op == Iop_F64toI32S
1361 || e->Iex.Binop.op == Iop_F64toI64S) {
1362 Int szD = e->Iex.Binop.op==Iop_F64toI32S ? 4 : 8;
1363 HReg rf = iselDblExpr(env, e->Iex.Binop.arg2);
1365 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
1421 if (e->Iex.Unop.op == Iop_32Uto64 && e->Iex.Unop.arg->tag == Iex_Binop) {
1422 IROp opi = e->Iex.Unop.arg->Iex.Binop.op; /* inner op */
1423 IRExpr* argL = e->Iex.Unop.arg->Iex.Binop.arg1;
1424 IRExpr* argR = e->Iex.Unop.arg->Iex.Binop.arg2;
1448 switch (e->Iex.Unop.op) {
1452 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1453 addInstr(env, AMD64Instr_MovxLQ(e->Iex.Unop.op == Iop_32Sto64,
1459 iselInt128Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1464 iselInt128Expr(&rHi,&rLo, env, e->Iex.Unop.arg);
1473 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1474 Bool srcIs16 = toBool( e->Iex.Unop.op==Iop_16Uto32
1475 || e->Iex.Unop.op==Iop_16Uto64 );
1488 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1489 Bool srcIs16 = toBool( e->Iex.Unop.op==Iop_16Sto32
1490 || e->Iex.Unop.op==Iop_16Sto64 );
1502 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1511 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1513 switch (e->Iex.Unop.op) {
1527 AMD64CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
1537 AMD64CondCode cond = iselCondCode(env, e->Iex.Unop.arg);
1546 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1556 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1567 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1579 HReg pre = iselIntExpr_R(env, e->Iex.Unop.arg);
1595 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
1604 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1615 Int off = e->Iex.Unop.op==Iop_V128HIto64 ? -8 : -16;
1617 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1630 iselDVecExpr(&vHi, &vLo, env, e->Iex.Unop.arg);
1635 switch (e->Iex.Unop.op) {
1659 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
1674 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
1689 return iselIntExpr_R(env, e->Iex.Unop.arg);
1697 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
1716 HReg vec = iselVecExpr(env, e->Iex.Unop.arg);
1747 switch (e->Iex.Unop.op) {
1764 HReg arg = iselIntExpr_R(env, e->Iex.Unop.arg);
1782 AMD64AMode_IR(e->Iex.Get.offset,
1792 AMD64AMode_IR(e->Iex.Get.offset,hregAMD64_RBP()),
1802 env, e->Iex.GetI.descr,
1803 e->Iex.GetI.ix, e->Iex.GetI.bias );
1819 vassert(ty == e->Iex.CCall.retty);
1823 if (e->Iex.CCall.retty != Ity_I64 && e->Iex.CCall.retty != Ity_I32)
1830 e->Iex.CCall.cee, e->Iex.CCall.retty, e->Iex.CCall.args );
1837 if (e->Iex.CCall.retty == Ity_I64)
1850 addInstr(env, AMD64Instr_Imm64(e->Iex.Const.con->Ico.U64, r));
1862 && typeOfIRExpr(env->type_env,e->Iex.ITE.cond) == Ity_I1) {
1863 HReg r1 = iselIntExpr_R(env, e->Iex.ITE.iftrue);
1864 HReg r0 = iselIntExpr_R(env, e->Iex.ITE.iffalse);
1867 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
1876 IRTriop *triop = e->Iex.Triop.details;
1969 && imm8->Iex.Const.con->tag == Ico_U8
1970 && imm8->Iex.Const.con->Ico.U8 < 4
1973 && simm32->Iex.Const.con->tag == Ico_U64
1974 && fitsIn32Bits(simm32->Iex.Const.con->Ico.U64)) {
1975 UInt shift = imm8->Iex.Const.con->Ico.U8;
1976 UInt offset = toUInt(simm32->Iex.Const.con->Ico.U64);
1986 && e->Iex.Binop.op == Iop_Add64
1987 && e->Iex.Binop.arg2->tag == Iex_Binop
1988 && e->Iex.Binop.arg2->Iex.Binop.op == Iop_Shl64
1989 && e->Iex.Binop.arg2->Iex.Binop.arg2->tag == Iex_Const
1990 && e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8) {
1991 UInt shift = e->Iex.Binop.arg2->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
1993 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
1994 HReg r2 = iselIntExpr_R(env, e->Iex.Binop.arg2->Iex.Binop.arg1 );
2001 && e->Iex.Binop.op == Iop_Add64
2002 && e->Iex.Binop.arg2->tag == Iex_Const
2003 && e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
2004 && fitsIn32Bits(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64)) {
2005 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2007 toUInt(e->Iex.Binop.arg2->Iex.Const.con->Ico.U64),
2054 switch (e->Iex.Const.con->tag) {
2056 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
2057 return AMD64RMI_Imm(toUInt(e->Iex.Const.con->Ico.U64));
2061 return AMD64RMI_Imm(e->Iex.Const.con->Ico.U32); break;
2063 return AMD64RMI_Imm(0xFFFF & e->Iex.Const.con->Ico.U16); break;
2065 return AMD64RMI_Imm(0xFF & e->Iex.Const.con->Ico.U8); break;
2073 return AMD64RMI_Mem(AMD64AMode_IR(e->Iex.Get.offset,
2079 && e->Iex.Load.end == Iend_LE) {
2080 AMD64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2123 switch (e->Iex.Const.con->tag) {
2125 if (fitsIn32Bits(e->Iex.Const.con->Ico.U64)) {
2126 return AMD64RI_Imm(toUInt(e->Iex.Const.con->Ico.U64));
2130 return AMD64RI_Imm(e->Iex.Const.con->Ico.U32);
2132 return AMD64RI_Imm(0xFFFF & e->Iex.Const.con->Ico.U16);
2134 return AMD64RI_Imm(0xFF & e->Iex.Const.con->Ico.U8);
2179 return AMD64RM_Mem(AMD64AMode_IR(e->Iex.Get.offset,
2215 HReg r64 = lookupIRTemp(env, e->Iex.RdTmp.tmp);
2225 vassert(e->Iex.Const.con->tag == Ico_U1);
2226 vassert(e->Iex.Const.con->Ico.U1 == True
2227 || e->Iex.Const.con->Ico.U1 == False);
2231 return e->Iex.Const.con->Ico.U1 ? Acc_Z : Acc_NZ;
2235 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_Not1) {
2237 return 1 ^ iselCondCode(env, e->Iex.Unop.arg);
2243 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_64to1) {
2244 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2252 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_32to1) {
2253 HReg reg = iselIntExpr_R(env, e->Iex.Unop.arg);
2262 && e->Iex.Unop.op == Iop_CmpNEZ8) {
2263 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2272 && e->Iex.Unop.op == Iop_CmpNEZ16) {
2273 HReg r = iselIntExpr_R(env, e->Iex.Unop.arg);
2282 && e->Iex.Unop.op == Iop_CmpNEZ32) {
2283 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2308 && e->Iex.Unop.op == Iop_CmpNEZ64) {
2309 HReg r1 = iselIntExpr_R(env, e->Iex.Unop.arg);
2319 && (e->Iex.Binop.op == Iop_CmpEQ8
2320 || e->Iex.Binop.op == Iop_CmpNE8
2321 || e->Iex.Binop.op == Iop_CasCmpEQ8
2322 || e->Iex.Binop.op == Iop_CasCmpNE8)) {
2323 if (isZeroU8(e->Iex.Binop.arg2)) {
2324 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2326 switch (e->Iex.Binop.op) {
2332 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2333 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2338 switch (e->Iex.Binop.op) {
2348 && (e->Iex.Binop.op == Iop_CmpEQ16
2349 || e->Iex.Binop.op == Iop_CmpNE16
2350 || e->Iex.Binop.op == Iop_CasCmpEQ16
2351 || e->Iex.Binop.op == Iop_CasCmpNE16)) {
2352 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2353 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2358 switch (e->Iex.Binop.op) {
2368 && e->Iex.Binop.op == Iop_CmpNE64
2369 && e->Iex.Binop.arg1->tag == Iex_CCall
2370 && e->Iex.Binop.arg2->tag == Iex_Const) {
2371 IRExpr* cal = e->Iex.Binop.arg1;
2372 IRExpr* con = e->Iex.Binop.arg2;
2375 vassert(cal->Iex.CCall.retty == Ity_I64); /* else ill-typed IR */
2376 vassert(con->Iex.Const.con->tag == Ico_U64);
2381 cal->Iex.CCall.cee,
2382 cal->Iex.CCall.retty, cal->Iex.CCall.args );
2387 addInstr(env, AMD64Instr_Imm64(con->Iex.Const.con->Ico.U64, tmp));
2395 && (e->Iex.Binop.op == Iop_CmpEQ64
2396 || e->Iex.Binop.op == Iop_CmpNE64
2397 || e->Iex.Binop.op == Iop_CmpLT64S
2398 || e->Iex.Binop.op == Iop_CmpLT64U
2399 || e->Iex.Binop.op == Iop_CmpLE64S
2400 || e->Iex.Binop.op == Iop_CmpLE64U
2401 || e->Iex.Binop.op == Iop_CasCmpEQ64
2402 || e->Iex.Binop.op == Iop_CasCmpNE64
2403 || e->Iex.Binop.op == Iop_ExpCmpNE64)) {
2404 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2405 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2407 switch (e->Iex.Binop.op) {
2421 && (e->Iex.Binop.op == Iop_CmpEQ32
2422 || e->Iex.Binop.op == Iop_CmpNE32
2423 || e->Iex.Binop.op == Iop_CmpLT32S
2424 || e->Iex.Binop.op == Iop_CmpLT32U
2425 || e->Iex.Binop.op == Iop_CmpLE32S
2426 || e->Iex.Binop.op == Iop_CmpLE32U
2427 || e->Iex.Binop.op == Iop_CasCmpEQ32
2428 || e->Iex.Binop.op == Iop_CasCmpNE32
2429 || e->Iex.Binop.op == Iop_ExpCmpNE32)) {
2430 HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
2431 AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
2433 switch (e->Iex.Binop.op) {
2481 lookupIRTempPair( rHi, rLo, env, e->Iex.RdTmp.tmp);
2487 switch (e->Iex.Binop.op) {
2496 Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
2497 AMD64RM* rmLeft = iselIntExpr_RM(env, e->Iex.Binop.arg1);
2498 HReg rRight = iselIntExpr_R(env, e->Iex.Binop.arg2);
2517 Bool syned = toBool(e->Iex.Binop.op == Iop_DivModS128to64);
2518 AMD64RM* rmRight = iselIntExpr_RM(env, e->Iex.Binop.arg2);
2519 iselInt128Expr(&sHi,&sLo, env, e->Iex.Binop.arg1);
2532 *rHi = iselIntExpr_R(env, e->Iex.Binop.arg1);
2533 *rLo = iselIntExpr_R(env, e->Iex.Binop.arg2);
2571 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
2574 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
2577 vassert(e->Iex.Load.ty == Ity_F32);
2578 am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2584 && e->Iex.Binop.op == Iop_F64toF32) {
2589 HReg src = iselDblExpr(env, e->Iex.Binop.arg2);
2590 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2597 AMD64AMode* am = AMD64AMode_IR( e->Iex.Get.offset,
2605 && e->Iex.Unop.op == Iop_ReinterpI32asF32) {
2609 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2616 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF32toInt) {
2618 HReg arg = iselFltExpr(env, e->Iex.Binop.arg2);
2625 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2640 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_NegF32) {
2647 HReg src = iselFltExpr(env, e->Iex.Unop.arg);
2659 if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_MAddF32) {
2660 IRQop *qop = e->Iex.Qop.details;
2759 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
2770 if (e->Iex.Const.con->tag == Ico_F64) {
2771 u.f64 = e->Iex.Const.con->Ico.F64;
2773 else if (e->Iex.Const.con->tag == Ico_F64i) {
2774 u.u64 = e->Iex.Const.con->Ico.F64i;
2789 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
2792 vassert(e->Iex.Load.ty == Ity_F64);
2793 am = iselIntExpr_AMode(env, e->Iex.Load.addr);
2799 AMD64AMode* am = AMD64AMode_IR( e->Iex.Get.offset,
2809 env, e->Iex.GetI.descr,
2810 e->Iex.GetI.ix, e->Iex.GetI.bias );
2817 IRTriop *triop = e->Iex.Triop.details;
2838 if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_MAddF64) {
2839 IRQop *qop = e->Iex.Qop.details;
2886 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
2888 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
2895 set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
2910 IRTriop *triop = e->Iex.Triop.details;
2970 if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64StoF64) {
2972 HReg src = iselIntExpr_R(env, e->Iex.Binop.arg2);
2973 set_SSE_rounding_mode( env, e->Iex.Binop.arg1 );
2979 if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_I32StoF64) {
2981 HReg src = iselIntExpr_R(env, e->Iex.Unop.arg);
2988 && (e->Iex.Unop.op == Iop_NegF64
2989 || e->Iex.Unop.op == Iop_AbsF64)) {
2996 HReg src = iselDblExpr(env, e->Iex.Unop.arg);
3004 if (e->Iex.Unop.op == Iop_NegF64)
3015 switch (e->Iex.Binop.op) {
3025 HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
3027 Int nNeeded = e->Iex.Binop.op==Iop_TanF64 ? 2 : 1;
3046 switch (e->Iex.Unop.op) {
3049 //.. HReg ri = iselIntExpr_R(env, e->Iex.Unop.arg);
3063 AMD64RI* src = iselIntExpr_RI(env, e->Iex.Unop.arg);
3075 f32 = iselFltExpr(env, e->Iex.Unop.arg);
3088 vassert(typeOfIRExpr(env->type_env,e->Iex.ITE.cond) == Ity_I1);
3089 r1 = iselDblExpr(env, e->Iex.ITE.iftrue);
3090 r0 = iselDblExpr(env, e->Iex.ITE.iffalse);
3093 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
3130 return lookupIRTemp(env, e->Iex.RdTmp.tmp);
3139 AMD64AMode_IR(e->Iex.Get.offset, hregAMD64_RBP())
3145 if (e->tag == Iex_Load && e->Iex.Load.end == Iend_LE) {
3147 AMD64AMode* am = iselIntExpr_AMode(env, e->Iex.Load.addr);
3154 vassert(e->Iex.Const.con->tag == Ico_V128);
3155 switch (e->Iex.Const.con->Ico.V128) {
3166 (e->Iex.Const.con->Ico.V128 >> 8) & 0xFF
3169 (e->Iex.Const.con->Ico.V128 >> 0) & 0xFF
3180 switch (e->Iex.Unop.op) {
3183 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3203 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3218 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3232 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3249 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3265 HReg arg = iselVecExpr(env, e->Iex.Unop.arg);
3275 AMD64RI* ri = iselIntExpr_RI(env, e->Iex.Unop.arg);
3284 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Unop.arg);
3294 iselDVecExpr(&vHi, &vLo, env, e->Iex.Unop.arg);
3295 return (e->Iex.Unop.op == Iop_V256toV128_1) ? vHi : vLo;
3300 } /* switch (e->Iex.Unop.op) */
3304 switch (e->Iex.Binop.op) {
3309 HReg arg = iselVecExpr(env, e->Iex.Binop.arg2);
3313 addInstr(env, (e->Iex.Binop.op == Iop_Sqrt64Fx2
3322 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3323 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3334 HReg srcV = iselVecExpr(env, e->Iex.Binop.arg1);
3335 HReg srcI = iselIntExpr_R(env, e->Iex.Binop.arg2);
3347 AMD64RI* qHi = iselIntExpr_RI(env, e->Iex.Binop.arg1);
3348 AMD64RI* qLo = iselIntExpr_RI(env, e->Iex.Binop.arg2);
3365 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3366 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3381 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3382 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3400 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3401 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3419 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3420 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3487 HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1);
3488 HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2);
3509 HReg greg = iselVecExpr(env, e->Iex.Binop.arg1);
3510 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
3561 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3562 HReg argR = iselVecExpr(env, e->Iex.Binop.arg2);
3613 HReg argL = iselVecExpr(env, e->Iex.Binop.arg1);
3614 HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);
3655 } /* switch (e->Iex.Binop.op) */
3659 IRTriop *triop = e->Iex.Triop.details;
3700 HReg r1 = iselVecExpr(env, e->Iex.ITE.iftrue);
3701 HReg r0 = iselVecExpr(env, e->Iex.ITE.iffalse);
3704 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
3748 lookupIRTempPair( rHi, rLo, env, e->Iex.RdTmp.tmp);
3756 AMD64AMode* am0 = AMD64AMode_IR(e->Iex.Get.offset + 0, rbp);
3757 AMD64AMode* am16 = AMD64AMode_IR(e->Iex.Get.offset + 16, rbp);
3768 HReg rA = iselIntExpr_R(env, e->Iex.Load.addr);
3779 vassert(e->Iex.Const.con->tag == Ico_V256);
3780 switch (e->Iex.Const.con->Ico.V256) {
3795 switch (e->Iex.Unop.op) {
3799 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3811 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3825 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3841 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3866 iselDVecExpr(&argHi, &argLo, env, e->Iex.Unop.arg);
3884 } /* switch (e->Iex.Unop.op) */
3888 switch (e->Iex.Binop.op) {
3895 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3896 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3913 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3914 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3963 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
3964 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
3986 iselDVecExpr(&gregHi, &gregLo, env, e->Iex.Binop.arg1);
3987 AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
4006 *rHi = iselVecExpr(env, e->Iex.Binop.arg1);
4007 *rLo = iselVecExpr(env, e->Iex.Binop.arg2);
4040 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4041 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4118 iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
4119 iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
4173 } /* switch (e->Iex.Binop.op) */
4177 IRTriop *triop = e->Iex.Triop.details;
4230 if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_64x4toV256) {
4238 AMD64RI* q3 = iselIntExpr_RI(env, e->Iex.Qop.details->arg1);
4239 AMD64RI* q2 = iselIntExpr_RI(env, e->Iex.Qop.details->arg2);
4240 AMD64RI* q1 = iselIntExpr_RI(env, e->Iex.Qop.details->arg3);
4241 AMD64RI* q0 = iselIntExpr_RI(env, e->Iex.Qop.details->arg4);
4257 iselDVecExpr(&r1Hi, &r1Lo, env, e->Iex.ITE.iftrue);
4258 iselDVecExpr(&r0Hi, &r0Lo, env, e->Iex.ITE.iffalse);
4263 AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
4518 && stmt->Ist.WrTmp.data->Iex.Binop.op == Iop_Add64) {
4841 IRConst* cdst = next->Iex.Const.con;