Home | History | Annotate | Download | only in priv

Lines Matching refs:assign

39    All uses of newTemp assign to an IRTemp and not a UInt
324 static void assign ( IRTemp dst, IRExpr* e )
367 assign(dst, loaded);
934 assign(t, IRExpr_Get( OFFB_ITSTATE, Ity_I32));
947 assign(t, IRExpr_Get( OFFB_QFLAG32, Ity_I32));
964 assign(nyu, binop(Iop_Or32, mkexpr(old), e) );
989 assign(masked, binop(Iop_Shr32, e, mkU8(lowbits_to_ignore)));
1020 assign(ge10, binop(Iop_And32, mkexpr(t32), mkU32(0x00008000)));
1021 assign(ge32, binop(Iop_And32, mkexpr(t32), mkU32(0x80000000)));
1038 assign(ge0, binop(Iop_And32, mkexpr(t32), mkU32(0x00000080)));
1039 assign(ge1, binop(Iop_And32, mkexpr(t32), mkU32(0x00008000)));
1040 assign(ge2, binop(Iop_And32, mkexpr(t32), mkU32(0x00800000)));
1041 assign(ge3, binop(Iop_And32, mkexpr(t32), mkU32(0x80000000)));
1074 assign(armEncd,
1077 assign(swapped,
1329 assign( c1, binop(Iop_CmpNE32, mkexpr(guardT), mkU32(0)) );
1361 assign( z32, mkU32(0) );
1373 assign( z32, mkU32(0) );
1384 assign( z32, mkU32(0) );
1482 assign(guards_for_next3,
1508 assign( res1, mk_armg_calculate_flags_nzcv() );
1511 assign(
1532 assign(res3,
1555 assign(immT, binop(Iop_And32, mkexpr(apsrT), mkU32(0xF0000000)) );
1559 assign(qnewT, binop(Iop_And32, mkexpr(apsrT), mkU32(ARMG_CC_MASK_Q)));
1612 assign( nd0, mkexpr(regT) );
1613 assign( nd1, mkU32(ceil) );
1614 assign( nd2, binop( Iop_CmpLT32S, mkexpr(nd1), mkexpr(nd0) ) );
1615 assign( nd3, IRExpr_ITE(mkexpr(nd2), mkexpr(nd1), mkexpr(nd0)) );
1616 assign( nd4, mkU32(floor) );
1617 assign( nd5, binop( Iop_CmpLT32S, mkexpr(nd3), mkexpr(nd4) ) );
1618 assign( nd6, IRExpr_ITE(mkexpr(nd5), mkexpr(nd4), mkexpr(nd3)) );
1619 assign( *res, mkexpr(nd6) );
1624 assign( *resQ, binop(Iop_Xor32, mkexpr(*res), mkexpr(regT)) );
1656 assign( nd0, mkexpr(regT) );
1657 assign( nd1, mkU32(ceil) );
1658 assign( nd2, binop( Iop_CmpLT32S, mkexpr(nd1), mkexpr(nd0) ) );
1659 assign( nd3, IRExpr_ITE( mkexpr(nd2), mkexpr(nd1), mkexpr(nd0) ) );
1660 assign( nd4, mkU32(floor) );
1661 assign( nd5, binop( Iop_CmpLT32S, mkexpr(nd3), mkexpr(nd4) ) );
1662 assign( nd6, IRExpr_ITE( mkexpr(nd5), mkexpr(nd4), mkexpr(nd3) ) );
1663 assign( *res, mkexpr(nd6) );
1668 assign( *resQ, binop(Iop_Xor32, mkexpr(*res), mkexpr(regT)) );
1681 assign(res, resE);
1696 assign(res, resE);
1739 assign( *newC, mk_armg_calculate_flag_c() );
1741 assign( *res, mkexpr(rMt) );
1746 assign( *newC,
1752 assign( *res,
1773 assign( amtT, binop(Iop_And32, mkexpr(rSt), mkU32(255)) );
1784 assign(oldC, mk_armg_calculate_flag_c() );
1785 assign(
1815 assign(
1845 assign( *newC,
1850 assign( *res, mkU32(0) );
1858 assign( *newC,
1864 assign( *res,
1885 assign( amtT, binop(Iop_And32, mkexpr(rSt), mkU32(255)) );
1894 assign(oldC, mk_armg_calculate_flag_c() );
1895 assign(
1925 assign(
1955 assign( *newC,
1960 assign( *res, binop(Iop_Sar32, mkexpr(rMt), mkU8(31)) );
1968 assign( *newC,
1974 assign( *res,
1995 assign( amtT, binop(Iop_And32, mkexpr(rSt), mkU32(255)) );
2004 assign(oldC, mk_armg_calculate_flag_c() );
2005 assign(
2038 assign(
2066 assign( amtT, binop(Iop_And32, mkexpr(rSt), mkU32(255)) );
2068 assign( amt5T, binop(Iop_And32, mkexpr(rSt), mkU32(31)) );
2070 assign(oldC, mk_armg_calculate_flag_c() );
2072 assign(
2095 assign(
2174 assign( *newC,
2177 assign( oldcT, mk_armg_calculate_flag_c() );
2178 assign( *res,
2189 assign( *newC,
2195 assign( *res,
2311 assign( *shco, mk_armg_calculate_flag_c() );
2313 assign( *shco, mkU32( (imm >> 31) & 1 ) );
2317 assign( *shop, mkU32(imm) );
2330 assign(rMt, getIRegA(rM));
2353 assign(rMt, getIRegA(rM));
2354 assign(rSt, getIRegA(rS));
2431 assign(rmT, getIRegA(rM));
2432 assign(cflagT, mk_armg_calculate_flag_c());
2439 assign(rmT, getIRegA(rM));
2492 Assign a new temp to hold that value, and return the temp. */
2531 assign(
2539 assign(
2551 assign(
2559 assign(nzcv, binop(Iop_Sub32, mkexpr(termL), mkexpr(termR)));
2713 assign(x1,
2722 assign(x2,
2731 assign(x3,
2740 assign(x4,
2749 assign(x5,
2767 assign(res,
2788 assign(res,
2930 assign(old_mask, mkU64(0));
2931 assign(old_res, mkU64(0));
2932 assign(old_arg, getDRegI64(mreg));
2944 assign(arg_l, getDRegI64(nreg+i));
2945 assign(new_arg, binop(Iop_Sub8x8, mkexpr(old_arg), mkU64(imm)));
2946 assign(cur_mask, binop(cmp, mkU64(imm), mkexpr(old_arg)));
2947 assign(new_mask, binop(Iop_Or64, mkexpr(old_mask), mkexpr(cur_mask)));
2948 assign(new_res, binop(Iop_Or64,
2964 assign(new_res, binop(Iop_Or64,
3004 assign(arg_m, getDRegI64(mreg));
3027 assign(res, unop(op, binop(op2, mkexpr(arg_m), mkU8(index))));
3059 assign(arg_n, getQReg(nreg));
3060 assign(arg_m, getQReg(mreg));
3065 assign(arg_n, getDRegI64(nreg));
3066 assign(arg_m, getDRegI64(mreg));
3130 assign(res,
3196 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
3197 assign(tmp, binop(op2, mkexpr(arg_n), mkexpr(arg_m)));
3261 assign(cc, binop(shift_op,
3278 assign(res, binop(add_op,
3289 assign(cc, binop(shift_op,
3300 assign(res, binop(add_op,
3320 assign(res, binop(Iop_AndV128, mkexpr(arg_n),
3323 assign(res, binop(Iop_And64, mkexpr(arg_n),
3334 assign(res, binop(Iop_AndV128,mkexpr(arg_n),
3337 assign(res, binop(Iop_And64, mkexpr(arg_n),
3349 assign(res, binop(Iop_OrV128, mkexpr(arg_n),
3352 assign(res, binop(Iop_Or64, mkexpr(arg_n),
3360 assign(res, mkexpr(arg_m));
3368 assign(res, binop(Iop_OrV128,mkexpr(arg_n),
3371 assign(res, binop(Iop_Or64, mkexpr(arg_n),
3384 assign(res, binop(Iop_XorV128, mkexpr(arg_n),
3387 assign(res, binop(Iop_Xor64, mkexpr(arg_n),
3397 assign(reg_d, getQReg(dreg));
3398 assign(res,
3408 assign(reg_d, getDRegI64(dreg));
3409 assign(res,
3425 assign(reg_d, getQReg(dreg));
3426 assign(res,
3435 assign(reg_d, getDRegI64(dreg));
3436 assign(res,
3452 assign(reg_d, getQReg(dreg));
3453 assign(res,
3462 assign(reg_d, getDRegI64(dreg));
3463 assign(res,
3541 assign(res,
3606 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
3607 assign(tmp, binop(op2, mkexpr(arg_n), mkexpr(arg_m)));
3636 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
3647 assign(res,
3695 assign(res, binop(op, mkexpr(arg_m),
3698 assign(res, binop(op, mkexpr(arg_m), mkexpr(arg_n)));
3701 assign(tmp, binop(sub_op,
3705 assign(tmp, binop(sub_op, mkU64(0), mkexpr(arg_n)));
3707 assign(res, binop(op, mkexpr(arg_m),
3710 assign(res, binop(op, mkexpr(arg_m), mkexpr(tmp)));
3792 assign(res, binop(op, mkexpr(arg_m), mkexpr(arg_n)));
3795 assign(shval, binop(op_shrn,
3803 assign(shval, binop(Q ? Iop_OrV128 : Iop_Or64,
3824 assign(mask, binop(cmp_gt, mkexpr(shval),
3827 assign(tmp, binop(op_rev, mkexpr(res),
3830 assign(tmp, binop(op_rev, mkexpr(res), mkexpr(arg_n)));
3860 assign(imm_val, Q ? mkU128(imm) : mkU64(imm));
3927 assign(shval, binop(op_shrn,
3935 assign(shval, binop(Q ? Iop_OrV128 : Iop_Or64,
3943 assign(round, binop(Q ? Iop_AndV128 : Iop_And64,
3955 assign(res, binop(op_add,
3961 assign(round, binop(Q ? Iop_AndV128 : Iop_And64,
3972 assign(res, binop(op_add,
3998 assign(imm_val, Q ? mkU128(imm) : mkU64(imm));
4077 assign(shval, binop(op_shrn,
4085 assign(shval, binop(Q ? Iop_OrV128 : Iop_Or64,
4092 assign(round, binop(Q ? Iop_AndV128 : Iop_And64,
4103 assign(res, binop(op_add,
4121 assign(mask, binop(cmp_gt, mkexpr(shval),
4124 assign(tmp, binop(op_rev, mkexpr(res),
4127 assign(tmp, binop(op_rev, mkexpr(res), mkexpr(arg_n)));
4161 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4186 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4245 assign(cond, binop(op_cmp, mkexpr(arg_n), mkexpr(arg_m)));
4246 assign(res, binop(Q ? Iop_OrV128 : Iop_Or64,
4316 assign(acc, getQReg(dreg));
4321 assign(acc, getDRegI64(dreg));
4323 assign(cond, binop(op_cmp, mkexpr(arg_n), mkexpr(arg_m)));
4324 assign(tmp, binop(Q ? Iop_OrV128 : Iop_Or64,
4334 assign(res, binop(op_add, mkexpr(acc), mkexpr(tmp)));
4369 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4381 assign(res, unop(op, binop(Q ? Iop_AndV128 : Iop_And64,
4389 assign(res, unop(Q ? Iop_NotV128 : Iop_Not64,
4444 assign(res, binop(op2,
4472 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4502 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4534 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4568 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4593 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4628 assign(res, unop(Iop_Abs32Fx4,
4634 assign(res, unop(Iop_Abs32Fx2,
4645 assign(res, binop_w_fake_RM(op, mkexpr(arg_n), mkexpr(arg_m)));
4670 assign(res, binop_w_fake_RM(
4685 assign(res, binop_w_fake_RM(op, mkexpr(arg_n), mkexpr(arg_m)));
4701 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4715 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4725 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4739 assign(res, binop(op,
4744 assign(res, binop(op,
4770 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4785 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
4793 assign(res, binop(Q ? Iop_Recps32Fx4 : Iop_Recps32Fx2,
4802 assign(res, binop(Q ? Iop_Rsqrts32Fx4 : Iop_Rsqrts32Fx2,
4868 assign(arg_n, getQReg(nreg));
4870 assign(arg_n, unop(cvt, getDRegI64(nreg)));
4872 assign(arg_m, unop(cvt, getDRegI64(mreg)));
4917 assign(tmp, binop(op, getQReg(nreg), getQReg(mreg)));
4920 assign(res, binop(op, mkexpr(tmp),
4923 assign(res, mkexpr(tmp));
4969 assign(arg_n, unop(cvt, getDRegI64(nreg)));
4970 assign(arg_m, unop(cvt, getDRegI64(mreg)));
4971 assign(cond, unop(cvt2, binop(cmp, getDRegI64(nreg),
4973 assign(res, binop(op2,
5027 assign(tmp, binop(op, getQReg(nreg), getQReg(mreg)));
5030 assign(res, binop(op2, mkexpr(tmp),
5033 assign(res, mkexpr(tmp));
5076 assign(arg_n, unop(cvt, getDRegI64(nreg)));
5077 assign(arg_m, unop(cvt, getDRegI64(mreg)));
5078 assign(cond, unop(cvt2, binop(cmp, getDRegI64(nreg),
5080 assign(res, binop(Iop_OrV128,
5117 assign(res, binop(op, getDRegI64(nreg),getDRegI64(mreg)));
5156 assign(res, binop(op, getDRegI64(nreg), getDRegI64(mreg)));
5157 assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
5268 assign(arg_n, getQReg(nreg));
5288 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5293 assign(arg_n, getDRegI64(nreg));
5313 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5349 assign(res, binop_w_fake_RM(op, mkexpr(arg_n), mkexpr(arg_m)));
5372 assign(arg_n, getDRegI64(nreg));
5392 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5411 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
5431 assign(arg_n, getDRegI64(nreg));
5451 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5478 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
5479 assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
5505 assign(arg_n, getQReg(nreg));
5525 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5530 assign(arg_n, getDRegI64(nreg));
5550 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5579 assign(res, binop_w_fake_RM(op, mkexpr(arg_n), mkexpr(arg_m)));
5600 assign(arg_n, getDRegI64(nreg));
5620 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5627 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
5644 assign(arg_n, getDRegI64(nreg));
5664 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5710 assign(arg_n, getQReg(nreg));
5730 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5735 assign(arg_n, getDRegI64(nreg));
5755 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5777 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
5808 assign(arg_n, getQReg(nreg));
5828 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5833 assign(arg_n, getDRegI64(nreg));
5853 assign(arg_m, unop(dup, binop(get, getDRegI64(mreg), mkU8(index))));
5875 assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
5963 assign(reg_m, getQReg(mreg));
5988 assign(reg_m, getDRegI64(mreg));
6010 assign(res,
6023 assign(res, getQReg(mreg));
6026 assign(res, getDRegI64(mreg));
6055 assign(reg_m, getQReg(mreg));
6059 assign(reg_m, getDRegI64(mreg));
6105 assign(res, binop(op, mkexpr(reg_m), mkU8(shift_imm)));
6145 assign(mask, binop(op, binop(Iop_64HLtoV128,
6149 assign(res, binop(Iop_OrV128,
6159 assign(mask, binop(op, mkU64(0xFFFFFFFFFFFFFFFFLL),
6161 assign(res, binop(Iop_Or64,
6194 assign(mask, binop(op, binop(Iop_64HLtoV128,
6198 assign(res, binop(Iop_OrV128,
6208 assign(mask, binop(op, mkU64(0xFFFFFFFFFFFFFFFFLL),
6210 assign(res, binop(Iop_Or64,
6239 assign(res, binop(op, Q ? getQReg(mreg) : getDRegI64(mreg),
6337 assign(reg_m, getQReg(mreg));
6342 assign(reg_m, getDRegI64(mreg));
6344 assign(res, binop(op, mkexpr(reg_m), mkU8(shift_imm)));
6345 assign(tmp, binop(op_rev, mkexpr(res), mkU8(shift_imm)));
6366 assign(reg_m, getQReg(mreg));
6384 assign(res, unop(narOp,
6397 assign(reg_m, getQReg(mreg));
6427 assign(res, unop(narOp,
6522 assign(reg_m, getQReg(mreg));
6525 assign(res, binop(add,
6534 assign(res, binop(op, mkexpr(reg_m), mkU8(shift_imm)));
6568 assign(res, binop(op, unop(cvt, getDRegI64(mreg)), mkU8(shift_imm)));
6637 assign(arg_m, getQReg(mreg));
6641 assign(arg_m, getDRegI64(mreg));
6662 assign(res, unop(op, mkexpr(arg_m)));
6683 assign(res, unop(op, mkexpr(arg_m)));
6702 assign(res, unop(op, mkexpr(arg_m)));
6731 assign(res, unop(op, mkexpr(arg_m)));
6749 assign(res, unop(op, mkexpr(arg_m)));
6764 assign(res, unop(op, mkexpr(arg_m)));
6771 assign(res, unop(Q ? Iop_Cnt8x16 : Iop_Cnt8x8, mkexpr(arg_m)));
6778 assign(res, unop(Iop_NotV128, mkexpr(arg_m)));
6780 assign(res, unop(Iop_Not64, mkexpr(arg_m)));
6830 assign(arg_d, getQReg(dreg));
6833 assign(arg_d, getDRegI64(dreg));
6835 assign(res, binop(add_op, unop(op, mkexpr(arg_m)),
6879 assign(mask, binop(op_cmp, mkexpr(arg_m), zero1));
6882 assign(res, binop(Q ? Iop_OrV128 : Iop_Or64,
6890 assign(tmp, binop(Q ? Iop_OrV128 : Iop_Or64,
6930 assign(res, binop(op, zero, mkexpr(arg_m)));
6950 assign(arg_m, getQReg(mreg));
6954 assign(arg_m, getDRegI64(mreg));
6981 assign(res, binop(op, mkexpr(arg_m), zero));
7001 assign(res, binop(op, mkexpr(arg_m), zero));
7010 assign(res, unop(Q ? Iop_NotV128 : Iop_Not64,
7032 assign(res, binop(op, zero, mkexpr(arg_m)));
7041 assign(res, unop(Q ? Iop_NotV128 : Iop_Not64,
7063 assign(res, binop(op, zero, mkexpr(arg_m)));
7072 assign(res, unop(Q ? Iop_NotV128 : Iop_Not64,
7094 assign(res, binop(op, zero, mkexpr(arg_m)));
7103 assign(res, binop(op, zero, mkexpr(arg_m)));
7122 assign(res, unop(op, mkexpr(arg_m)));
7124 assign(res, unop(Q ? Iop_Abs32Fx4 : Iop_Abs32Fx2,
7142 assign(res, unop(op, mkexpr(arg_m)));
7156 assign(res, binop(op, zero, mkexpr(arg_m)));
7177 assign(arg_m, getQReg(mreg));
7182 assign(arg_m, getDRegI64(mreg));
7198 assign(old_m, getQReg(mreg));
7199 assign(old_d, getQReg(dreg));
7205 assign(old_m, getDRegI64(mreg));
7206 assign(old_d, getDRegI64(dreg));
7247 assign(new_d, binop(op_even, mkexpr(old_m), mkexpr(old_d)));
7248 assign(new_m, binop(op_odd, mkexpr(old_m), mkexpr(old_d)));
7270 assign(old_m, getQReg(mreg));
7271 assign(old_d, getQReg(dreg));
7277 assign(old_m, getDRegI64(mreg));
7278 assign(old_d, getDRegI64(dreg));
7298 assign(new_d, binop(op_even, mkexpr(old_m), mkexpr(old_d)));
7299 assign(new_m, binop(op_odd, mkexpr(old_m), mkexpr(old_d)));
7321 assign(old_m, getQReg(mreg));
7322 assign(old_d, getQReg(dreg));
7328 assign(old_m, getDRegI64(mreg));
7329 assign(old_d, getDRegI64(dreg));
7349 assign(new_d, binop(op_lo, mkexpr(old_m), mkexpr(old_d)));
7350 assign(new_m, binop(op_hi, mkexpr(old_m), mkexpr(old_d)));
7429 assign(res, unop(op, getQReg(mreg)));
7430 assign(tmp, unop(op2, getQReg(mreg)));
7452 assign(res, binop(op, unop(cvt, getDRegI64(mreg)),
7743 assign(tmp_var, getQReg(dreg));
7746 assign(tmp_var, getDRegI64(dreg));
7948 assign(*u0, binop(Iop_InterleaveLO32x2, mkexpr(i1), mkexpr(i0)));
7949 assign(*u1, binop(Iop_InterleaveHI32x2, mkexpr(i1), mkexpr(i0)));
7954 assign(*u0, binop(Iop_CatEvenLanes16x4, mkexpr(i1), mkexpr(i0)));
7955 assign(*u1, binop(Iop_CatOddLanes16x4, mkexpr(i1), mkexpr(i0)));
7960 assign(*u0, binop(Iop_CatEvenLanes8x8, mkexpr(i1), mkexpr(i0)));
7961 assign(*u1, binop(Iop_CatOddLanes8x8, mkexpr(i1), mkexpr(i0)));
7984 assign(*i0, binop(Iop_InterleaveLO32x2, mkexpr(u1), mkexpr(u0)));
7985 assign(*i1, binop(Iop_InterleaveHI32x2, mkexpr(u1), mkexpr(u0)));
7990 assign(*i0, binop(Iop_InterleaveLO16x4, mkexpr(u1), mkexpr(u0)));
7991 assign(*i1, binop(Iop_InterleaveHI16x4, mkexpr(u1), mkexpr(u0)));
7996 assign(*i0, binop(Iop_InterleaveLO8x8, mkexpr(u1), mkexpr(u0)));
7997 assign(*i1, binop(Iop_InterleaveHI8x8, mkexpr(u1), mkexpr(u0)));
8027 assign(h3, binop(Iop_InterleaveHI8x8,
8030 assign(h2, binop(Iop_InterleaveHI8x8,
8033 assign(h1, binop(Iop_InterleaveHI8x8,
8036 assign(h0, binop(Iop_InterleaveHI8x8,
8046 assign(w1, binop(Iop_InterleaveHI16x4, mkexpr(h3), mkexpr(h2)));
8047 assign(w0, binop(Iop_InterleaveHI16x4, mkexpr(h1), mkexpr(h0)));
8069 assign(*u0, IHI32x2(SHL64(i1, 0), SHL64(i0, 32)));
8070 assign(*u1, IHI32x2(SHL64(i2, 32), SHL64(i0, 0)));
8071 assign(*u2, IHI32x2(SHL64(i2, 0), SHL64(i1, 32)));
8082 assign(*u0, XXX(i2,1, i1,2, i0,3, i0,0));
8083 assign(*u1, XXX(i2,2, i1,3, i1,0, i0,1));
8084 assign(*u2, XXX(i2,3, i2,0, i1,1, i0,2));
8093 assign(*u0, math_PERM_8x8x3(de0, i0, i1, i2));
8094 assign(*u1, math_PERM_8x8x3(de1, i0, i1, i2));
8095 assign(*u2, math_PERM_8x8x3(de2, i0, i1, i2));
8124 assign(*i0, IHI32x2(SHL64(u1, 32), SHL64(u0, 32)));
8125 assign(*i1, IHI32x2(SHL64(u0, 0), SHL64(u2, 32)));
8126 assign(*i2, IHI32x2(SHL64(u2, 0), SHL64(u1, 0)));
8137 assign(*i0, XXX(u0,1, u2,0, u1,0, u0,0));
8138 assign(*i1, XXX(u1,2, u0,2, u2,1, u1,1));
8139 assign(*i2, XXX(u2,3, u1,3, u0,3, u2,2));
8148 assign(*i0, math_PERM_8x8x3(in0, u0, u1, u2));
8149 assign(*i1, math_PERM_8x8x3(in1, u0, u1, u2));
8150 assign(*i2, math_PERM_8x8x3(in2, u0, u1, u2));
8186 assign(*u0, ILO32x2(i2, i0));
8187 assign(*u1, IHI32x2(i2, i0));
8188 assign(*u2, ILO32x2(i3, i1));
8189 assign(*u3, IHI32x2(i3, i1));
8195 assign(b1b0a1a0, ILO16x4(i1, i0));
8196 assign(b3b2a3a2, ILO16x4(i3, i2));
8197 assign(d1d0c1c0, IHI16x4(i1, i0));
8198 assign(d3d2c3c2, IHI16x4(i3, i2));
8200 assign(*u0, ILO32x2(b3b2a3a2, b1b0a1a0));
8201 assign(*u1, IHI32x2(b3b2a3a2, b1b0a1a0));
8202 assign(*u2, ILO32x2(d3d2c3c2, d1d0c1c0));
8203 assign(*u3, IHI32x2(d3d2c3c2, d1d0c1c0));
8210 assign(i0x, IHI8x8(i0, SHL64(i0, 32)));
8211 assign(i1x, IHI8x8(i1, SHL64(i1, 32)));
8212 assign(i2x, IHI8x8(i2, SHL64(i2, 32)));
8213 assign(i3x, IHI8x8(i3, SHL64(i3, 32)));
8219 assign(b1b0a1a0, ILO16x4(i1x, i0x));
8220 assign(b3b2a3a2, ILO16x4(i3x, i2x));
8221 assign(d1d0c1c0, IHI16x4(i1x, i0x));
8222 assign(d3d2c3c2, IHI16x4(i3x, i2x));
8224 assign(*u0, ILO32x2(b3b2a3a2, b1b0a1a0));
8225 assign(*u1, IHI32x2(b3b2a3a2, b1b0a1a0));
8226 assign(*u2, ILO32x2(d3d2c3c2, d1d0c1c0));
8227 assign(*u3, IHI32x2(d3d2c3c2, d1d0c1c0));
8266 assign(*i0, ILO32x2(u1, u0));
8267 assign(*i1, ILO32x2(u3, u2));
8268 assign(*i2, IHI32x2(u1, u0));
8269 assign(*i3, IHI32x2(u3, u2));
8276 assign(b1b0a1a0, ILO32x2(u1, u0));
8277 assign(b3b2a3a2, IHI32x2(u1, u0));
8278 assign(d1d0c1c0, ILO32x2(u3, u2));
8279 assign(d3d2c3c2, IHI32x2(u3, u2));
8281 assign(*i0, CEV16x4(d1d0c1c0, b1b0a1a0));
8282 assign(*i1, COD16x4(d1d0c1c0, b1b0a1a0));
8283 assign(*i2, CEV16x4(d3d2c3c2, b3b2a3a2));
8284 assign(*i3, COD16x4(d3d2c3c2, b3b2a3a2));
8291 assign(b1b0a1a0, ILO32x2(u1, u0));
8292 assign(b3b2a3a2, IHI32x2(u1, u0));
8293 assign(d1d0c1c0, ILO32x2(u3, u2));
8294 assign(d3d2c3c2, IHI32x2(u3, u2));
8300 assign(i0x, CEV16x4(d1d0c1c0, b1b0a1a0));
8301 assign(i1x, COD16x4(d1d0c1c0, b1b0a1a0));
8302 assign(i2x, CEV16x4(d3d2c3c2, b3b2a3a2));
8303 assign(i3x, COD16x4(d3d2c3c2, b3b2a3a2));
8305 assign(*i0, COD8x8(i0x, SHL64(i0x, 8)));
8306 assign(*i1, COD8x8(i1x, SHL64(i1x, 8)));
8307 assign(*i2, COD8x8(i2x, SHL64(i2x, 8)));
8308 assign(*i3, COD8x8(i3x, SHL64(i3x, 8)));
8350 assign(initialRn, isT ? getIRegT(rN) : getIRegA(rN));
8353 assign(initialRm, isT ? getIRegT(rM) : getIRegA(rM));
8377 assign(addr, mkexpr(initialRn));
8427 assign(addr, mkexpr(initialRn));
8577 assign(addr, mkexpr(initialRn));
8589 assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(8)));
8624 assign(di0, loadLE(Ity_I64, a0));
8625 assign(di1, loadLE(Ity_I64, a1));
8630 assign(du0, getDRegI64(rD + 0 * regstep));
8631 assign(du1, getDRegI64(rD + 1 * regstep));
8637 assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(16)));
8655 assign(di0, loadLE(Ity_I64, a0));
8656 assign(di1, loadLE(Ity_I64, a1));
8657 assign(di2, loadLE(Ity_I64, a2));
8658 assign(di3, loadLE(Ity_I64, a3));
8667 assign(du0, getDRegI64(rD + 0 * regstep));
8668 assign(du1, getDRegI64(rD + 1 * regstep));
8669 assign(du2, getDRegI64(rD + 2 * regstep));
8670 assign(du3, getDRegI64(rD + 3 * regstep));
8681 assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(32)));
8700 assign(di0, loadLE(Ity_I64, a0));
8701 assign(di1, loadLE(Ity_I64, a1));
8702 assign(di2, loadLE(Ity_I64, a2));
8708 assign(du0, getDRegI64(rD + 0 * inc));
8709 assign(du1, getDRegI64(rD + 1 * inc));
8710 assign(du2, getDRegI64(rD + 2 * inc));
8717 assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(24)));
8738 assign(di0, loadLE(Ity_I64, a0));
8739 assign(di1, loadLE(Ity_I64, a1));
8740 assign(di2, loadLE(Ity_I64, a2));
8741 assign(di3, loadLE(Ity_I64, a3));
8749 assign(du0, getDRegI64(rD + 0 * inc));
8750 assign(du1, getDRegI64(rD + 1 * inc));
8751 assign(du2, getDRegI64(rD + 2 * inc));
8752 assign(du3, getDRegI64(rD + 3 * inc));
8761 assign(tmp, binop(Iop_Add32, mkexpr(addr), mkU32(32)));
8978 assign( srcN, binop(Iop_Sar32,
8982 assign( srcM, binop(Iop_Sar32,
8986 assign( res, binop(Iop_Mul32, mkexpr(srcN), mkexpr(srcM)) );
9032 assign( irt_prod,
9098 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
9160 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
9218 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
9274 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
9275 assign( irt_regN_lo,
9279 assign( irt_regN_hi, binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)) );
9336 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
9337 assign( irt_regN_lo, binop( Iop_Sar32,
9340 assign( irt_regN_hi, binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)) );
9394 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9395 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9397 assign(res, binop(Iop_Add16x2, mkexpr(rNt), mkexpr(rMt)));
9403 assign(reso, binop(Iop_HAdd16Ux2, mkexpr(rNt), mkexpr(rMt)));
9443 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9444 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9446 assign(res, binop(Iop_Add16x2, mkexpr(rNt), mkexpr(rMt)));
9452 assign(reso, unop(Iop_Not32,
9493 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9494 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9496 assign(res, binop(Iop_Sub16x2, mkexpr(rNt), mkexpr(rMt)));
9502 assign(reso, unop(Iop_Not32,
9543 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9544 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9546 assign(res, binop(Iop_Sub16x2, mkexpr(rNt), mkexpr(rMt)));
9552 assign(reso, unop(Iop_Not32,
9593 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9594 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9596 assign(res, binop(Iop_Add8x4, mkexpr(rNt), mkexpr(rMt)));
9602 assign(reso, binop(Iop_HAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
9642 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9643 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9645 assign(res, binop(Iop_Add8x4, mkexpr(rNt), mkexpr(rMt)));
9651 assign(reso, unop(Iop_Not32,
9692 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9693 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9695 assign(res, binop(Iop_Sub8x4, mkexpr(rNt), mkexpr(rMt)));
9701 assign(reso, unop(Iop_Not32,
9742 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9743 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9745 assign(res, binop(Iop_Sub8x4, mkexpr(rNt), mkexpr(rMt)));
9751 assign(reso, unop(Iop_Not32,
9791 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9792 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9794 assign(res_q, binop(Iop_QAdd8Sx4, mkexpr(rNt), mkexpr(rMt)));
9836 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9837 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9839 assign(res_q, binop(Iop_QSub8Sx4, mkexpr(rNt), mkexpr(rMt)));
9881 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9882 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9884 assign(res_q, binop(Iop_QAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
9926 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9927 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9929 assign(res_q, binop(Iop_QSub8Ux4, mkexpr(rNt), mkexpr(rMt)));
9971 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
9972 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
9974 assign(res_q, binop(Iop_HAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
10016 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
10017 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
10019 assign(res_q, binop(Iop_HAdd16Ux2, mkexpr(rNt), mkexpr(rMt)));
10061 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
10062 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
10064 assign(res_q, binop(Iop_HAdd8Sx4, mkexpr(rNt), mkexpr(rMt)));
10106 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
10107 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
10109 assign(res_q, binop(Iop_QAdd16Sx2, mkexpr(rNt), mkexpr(rMt)));
10151 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
10152 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
10154 assign(res_q, binop(Iop_QSub16Sx2, mkexpr(rNt), mkexpr(rMt)));
10201 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
10202 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
10204 assign( irt_diff,
10212 assign( irt_sum,
10270 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
10271 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
10273 assign( irt_diff,
10281 assign( irt_sum,
10336 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
10337 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
10339 assign( irt_diff,
10346 assign( irt_sum,
10359 assign(ge10, unop(Iop_Not32, mkexpr(irt_diff)));
10364 assign(ge32, unop(Iop_Not32, mkexpr(irt_sum)));
10417 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
10419 assign( tmpM, isT ? getIRegT(regM) : getIRegA(regM) );
10420 assign( irt_regM, genROR32(tmpM, (bitM & 1) ? 16 : 0) );
10422 assign( irt_prod_lo,
10430 assign( irt_prod_hi, binop(Iop_Mul32,
10500 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
10501 assign( irt_regA, isT ? getIRegT(regA) : getIRegA(regA) );
10503 assign( tmpM, isT ? getIRegT(regM) : getIRegA(regM) );
10504 assign( irt_regM, genROR32(tmpM, (bitM & 1) ? 16 : 0) );
10506 assign( irt_prod_lo,
10514 assign( irt_prod_hi,
10518 assign( irt_sum, binop( isAD ? Iop_Add32 : Iop_Sub32,
10584 assign( irt_prod,
10597 assign( irt_regA, isT ? getIRegT(regA) : getIRegA(regA) );
10658 assign( irt_prod,
10671 assign( irt_regD, binop(Iop_32HLto64,
10674 assign( irt_res, binop(Iop_Add64, mkexpr(irt_regD), mkexpr(irt_prod)) );
10675 assign( irt_resHi, unop(Iop_64HIto32, mkexpr(irt_res)) );
10676 assign( irt_resLo, unop(Iop_64to32, mkexpr(irt_res)) );
10727 assign( irt_prod,
10736 assign( irt_regA, isT ? getIRegT(regA) : getIRegA(regA) );
10739 assign(prod32,
10798 assign( irt_ge_flag0, get_GEFLAG32(0) );
10799 assign( irt_ge_flag1, get_GEFLAG32(1) );
10800 assign( irt_ge_flag2, get_GEFLAG32(2) );
10801 assign( irt_ge_flag3, get_GEFLAG32(3) );
10881 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
10884 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
10887 assign( irt_rot, binop(Iop_And32,
10999 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11000 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11002 assign(res_q, binop(Iop_QAdd32S, mkexpr(rMt), mkexpr(rNt)));
11051 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11052 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11060 assign(rN_d, binop(Iop_QAdd32S, mkexpr(rNt), mkexpr(rNt)));
11061 assign(res_q, binop(Iop_QAdd32S, mkexpr(rMt), mkexpr(rN_d)));
11109 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11110 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11112 assign(res_q, binop(Iop_QSub32S, mkexpr(rMt), mkexpr(rNt)));
11161 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11162 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11170 assign(rN_d, binop(Iop_QAdd32S, mkexpr(rNt), mkexpr(rNt)));
11171 assign(res_q, binop(Iop_QSub32S, mkexpr(rMt), mkexpr(rN_d)));
11219 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11220 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11222 assign(res_q, binop(Iop_QSub16Ux2, mkexpr(rNt), mkexpr(rMt)));
11264 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11265 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11267 assign(res_q, binop(Iop_HAdd16Sx2, mkexpr(rNt), mkexpr(rMt)));
11309 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11310 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11312 assign(res_q, binop(Iop_HSub8Ux4, mkexpr(rNt), mkexpr(rMt)));
11354 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11355 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11357 assign(res_q, binop(Iop_HSub16Ux2, mkexpr(rNt), mkexpr(rMt)));
11399 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11400 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11402 assign(res_q, binop(Iop_QAdd16Ux2, mkexpr(rNt), mkexpr(rMt)));
11447 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
11448 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
11450 assign( irt_diff,
11458 assign( irt_sum,
11516 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
11517 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
11519 assign( irt_diff,
11527 assign( irt_sum,
11582 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
11583 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
11585 assign( irt_sum,
11592 assign( irt_diff,
11607 assign( ge10, IRExpr_ITE( binop( Iop_CmpLE32U,
11614 assign(ge32, unop(Iop_Not32, mkexpr(irt_diff)));
11660 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
11661 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
11663 assign( irt_diff,
11670 assign( irt_sum,
11683 assign(ge10, unop(Iop_Not32, mkexpr(irt_diff)));
11688 assign( ge32, IRExpr_ITE( binop( Iop_CmpLE32U,
11736 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
11737 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
11739 assign( irt_sum,
11746 assign( irt_diff,
11759 assign(ge10, unop(Iop_Not32, mkexpr(irt_sum)));
11764 assign(ge32, unop(Iop_Not32, mkexpr(irt_diff)));
11809 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11810 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11812 assign(res_q, binop(Iop_HSub8Sx4, mkexpr(rNt), mkexpr(rMt)));
11852 assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
11855 assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
11858 assign( irt_rot, genROR32(irt_regM, 8 * rotate) );
11931 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
11932 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
11934 assign( irt_diff,
11951 assign( irt_sum,
11967 assign( res_q,
12028 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
12029 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
12031 assign( irt_diff,
12048 assign( irt_sum,
12064 assign( res_q,
12125 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
12126 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
12128 assign( irt_sum,
12145 assign( irt_diff,
12161 assign( res_q,
12222 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
12223 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
12225 assign( irt_sum,
12242 assign( irt_diff,
12258 assign( res_q,
12317 assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
12318 assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
12320 assign(res_q, binop(Iop_HSub16Sx2, mkexpr(rNt), mkexpr(rMt)));
12368 assign( irt_rA, isT ? getIRegT(rA) : getIRegA(rA) );
12369 assign( irt_rN, isT ? getIRegT(rN) : getIRegA(rN) );
12370 assign( irt_rM, isT ? getIRegT(rM) : getIRegA(rM) );
12432 assign( irt_rM, isT ? getIRegT(rM) : getIRegA(rM));
12433 assign( irt_rN, isT ? getIRegT(rN) : getIRegA(rN));
12434 assign( irt_rDhi, isT ? getIRegT(rDhi) : getIRegA(rDhi));
12435 assign( irt_rDlo, isT ? getIRegT(rDlo) : getIRegA(rDlo));
12436 assign( op_2, genROR32(irt_rM, m_swap ? 16 : 0) );
12437 assign( pr_1, binop(Iop_MullS32,
12446 assign( pr_2, binop(Iop_MullS32,
12451 assign( result, binop(Iop_Add64,
12462 assign( resHi, unop(Iop_64HIto32, mkexpr(result)) );
12463 assign( resLo, unop(Iop_64to32, mkexpr(result)) );
12520 assign( irt_rM, isT ? getIRegT(rM) : getIRegA(rM) );
12521 assign( irt_rN, isT ? getIRegT(rN) : getIRegA(rN) );
12522 assign( irt_rDhi, isT ? getIRegT(rDhi) : getIRegA(rDhi) );
12523 assign( irt_rDlo, isT ? getIRegT(rDlo) : getIRegA(rDlo) );
12524 assign( op_2, genROR32(irt_rM, m_swap ? 16 : 0) );
12525 assign( pr_1, binop(Iop_MullS32,
12534 assign( pr_2, binop(Iop_MullS32,
12539 assign( result, binop(Iop_Add64,
12550 assign( resHi, unop(Iop_64HIto32, mkexpr(result)) );
12551 assign( resLo, unop(Iop_64to32, mkexpr(result)) );
12606 assign(oldRnT, arm ? getIRegA(rN) : getIRegT(rN));
12613 /* assign(anchorT, binop(Iop_And32, mkexpr(oldRnT), mkU32(~3U))); */
12615 assign(anchorT, mkexpr(oldRnT));
12897 assign(rnT, align4if(isT ? getIRegT(rN) : getIRegA(rN),
12904 assign(rnTnew, binop(summary == 2 ? Iop_Add32 : Iop_Sub32,
12911 assign(taT, summary == 3 ? mkexpr(rnTnew) : mkexpr(rnT));
13034 assign(rnT, align4if(isT ? getIRegT(rN) : getIRegA(rN),
13041 assign(rnTnew, binop(summary == 2 ? Iop_Add32 : Iop_Sub32,
13048 assign(taT, summary == 3 ? mkexpr(rnTnew) : mkexpr(rnT));
13112 assign(nzcvT, binop(Iop_And32,
13176 assign(i64, unop(Iop_ReinterpF64asI64, getDReg(dM)));
13440 assign(ea, binop(bU ? Iop_Add32 : Iop_Sub32,
13586 assign(argL, getDReg(dD));
13587 assign(argR, bZ ? IRExpr_Const(IRConst_F64i(0)) : getDReg(dM));
13588 assign(irRes, binop(Iop_CmpF64, mkexpr(argL), mkexpr(argR)));
13610 assign(oldFPSCR, IRExpr_Get(OFFB_FPSCR, Ity_I32));
13611 assign(newFPSCR,
13706 assign(rmode, bZ ? mkU32(Irrm_ZERO)
13804 assign(rnT, align4if(isT ? getIRegT(rN) : getIRegA(rN),
13811 assign(rnTnew, binop(summary == 2 ? Iop_Add32 : Iop_Sub32,
13818 assign(taT, summary == 3 ? mkexpr(rnTnew) : mkexpr(rnT));
13923 assign(ea, binop(bU ? Iop_Add32 : Iop_Sub32,
14074 assign(argL, unop(Iop_F32toF64, getFReg(fD)));
14075 assign(argR, bZ ? IRExpr_Const(IRConst_F64i(0))
14077 assign(irRes, binop(Iop_CmpF64, mkexpr(argL), mkexpr(argR)));
14099 assign(oldFPSCR, IRExpr_Get(OFFB_FPSCR, Ity_I32));
14100 assign(newFPSCR,
14178 assign(rmode, mkexpr(mk_get_IR_rounding_mode()));
14211 assign(rmode, bZ ? mkU32(Irrm_ZERO)
14258 assign(rmode, mkexpr(mk_get_IR_rounding_mode()));
14301 assign(rmode, mkU32(Irrm_NEAREST)); // per the spec
14303 assign(src32, unop(Iop_ReinterpF32asI32, getFReg(d)));
14307 assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
14325 assign(src32, unop(Iop_64to32, getDRegI64(d)));
14329 assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
14344 assign(srcF64, getDReg(d));
14346 assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
14349 assign(scaledF64, triop(Iop_MulF64,
14354 assign(rmode, mkU32(Irrm_ZERO)); // as per the spec
14356 assign(asI32, binop(unsyned ? Iop_F64toI32U : Iop_F64toI32S,
14429 assign(eaT, eaE);
14694 assign( condT, mk_armg_calculate_condition( INSN_COND ));
14748 assign(rNt, getIRegA(rN));
14760 assign(res, binop(op, mkexpr(shop), mkexpr(rNt)) );
14764 assign(res, binop(op, mkexpr(rNt),
14768 assign(res, binop(op, mkexpr(rNt), mkexpr(shop)) );
14775 assign( oldV, mk_armg_calculate_flag_v() );
14828 assign( res, isMVN ? unop(Iop_Not32, mkexpr(shop))
14833 assign( oldV, mk_armg_calculate_flag_v() );
14864 assign(rNt, getIRegA(rN));
14890 assign(rNt, getIRegA(rN));
14899 assign( res, binop(isTEQ ? Iop_Xor32 : Iop_And32,
14902 assign( oldV, mk_armg_calculate_flag_v() );
14922 assign(rNt, getIRegA(rN));
14930 assign( oldC, mk_armg_calculate_flag_c() );
14935 assign(res,
14941 assign(res,
14947 assign(res,
15088 assign(eaT, eaE);
15092 assign(rnT, getIRegA(rN));
15114 assign(rDt, getIRegA(rD));
15338 assign(eaT, eaE);
15342 assign(rnT, getIRegA(rN));
15354 assign(llOldRd, llGetIReg(rD));
15597 assign( dst, getIRegA(rM) );
15630 assign(arg, getIRegA(rM));
15631 assign(res, IRExpr_ITE(
15658 assign( argL, getIRegA(rM));
15659 assign( argR, getIRegA(rS));
15660 assign( res, binop(Iop_Mul32, mkexpr(argL), mkexpr(argR)) );
15663 assign(oldC, mk_armg_calculate_flag_c());
15665 assign(oldV, mk_armg_calculate_flag_v());
15671 assign( pair, binop(Iop_Or32,
15697 assign(argL, getIRegA(rN));
15698 assign(argR, getIRegA(rM));
15699 assign(res, binop(Iop_DivS32, mkexpr(argL), mkexpr(argR)));
15719 assign(argL, getIRegA(rN));
15720 assign(argR, getIRegA(rM));
15721 assign(res, binop(Iop_DivU32, mkexpr(argL), mkexpr(argR)));
15751 assign( argL, getIRegA(rM));
15752 assign( argR, getIRegA(rS));
15753 assign( argP, getIRegA(rN));
15754 assign( res, binop(isMLS ? Iop_Sub32 : Iop_Add32,
15760 assign(oldC, mk_armg_calculate_flag_c());
15762 assign(oldV, mk_armg_calculate_flag_v());
15768 assign( pair, binop(Iop_Or32,
15801 assign( argL, getIRegA(rM));
15802 assign( argR, getIRegA(rS));
15803 assign( res, binop(mulOp, mkexpr(argL), mkexpr(argR)) );
15804 assign( resHi, unop(Iop_64HIto32, mkexpr(res)) );
15805 assign( resLo, unop(Iop_64to32, mkexpr(res)) );
15808 assign(oldC, mk_armg_calculate_flag_c());
15810 assign(oldV, mk_armg_calculate_flag_v());
15817 assign( pair, binop(Iop_Or32,
15851 assign( argL, getIRegA(rM));
15852 assign( argR, getIRegA(rS));
15853 assign( old, binop(Iop_32HLto64, getIRegA(rDhi), getIRegA(rDlo)) );
15854 assign( res, binop(Iop_Add64,
15857 assign( resHi, unop(Iop_64HIto32, mkexpr(res)) );
15858 assign( resLo, unop(Iop_64to32, mkexpr(res)) );
15861 assign(oldC, mk_armg_calculate_flag_c());
15863 assign(oldV, mk_armg_calculate_flag_v());
15870 assign( pair, binop(Iop_Or32,
15899 assign( argN, getIRegA(rN) );
15900 assign( argM, getIRegA(rM) );
15901 assign( argDhi, getIRegA(rDhi) );
15902 assign( argDlo, getIRegA(rDlo) );
15903 assign( res,
15909 assign( resHi, unop(Iop_64HIto32, mkexpr(res)) );
15910 assign( resLo, unop(Iop_64to32, mkexpr(res)) );
15934 assign(immT, mkU32(imm));
15952 assign(rNt, getIRegA(rN));
16015 assign(tRn, getIRegA(rN));
16016 assign(tNew, getIRegA(rM));
16140 assign(data,
16154 assign(resSC32,
16213 assign(srcT, getIRegA(rM));
16214 assign(rotT, genROR32(srcT, 8 * rot)); /* 0, 8, 16 or 24 only */
16217 assign(dstT, unop(Iop_8Uto32, unop(Iop_32to8, mkexpr(rotT))));
16221 assign(dstT, unop(Iop_8Sto32, unop(Iop_32to8, mkexpr(rotT))));
16225 assign(dstT, unop(Iop_16Uto32, unop(Iop_32to16, mkexpr(rotT))));
16229 assign(dstT, unop(Iop_16Sto32, unop(Iop_32to16, mkexpr(rotT))));
16233 assign(dstT, binop(Iop_And32, mkexpr(rotT), mkU32(0x00FF00FF)));
16239 assign(lo32, binop(Iop_And32, mkexpr(rotT), mkU32(0xFF)));
16240 assign(hi32, binop(Iop_Shr32, mkexpr(rotT), mkU8(16)));
16241 assign(
16284 assign(src, rN == 15 ? mkU32(0) : getIRegA(rN));
16285 assign(olddst, getIRegA(rD));
16286 assign(newdst,
16329 assign(src, getIRegA(rN));
16330 assign(tmp, binop(Iop_And32,
16333 assign(res, binop(isU ? Iop_Shr32 : Iop_Sar32,
16460 assign(eaT, eaE);
16464 assign(rnT, getIRegA(rN));
16506 assign(oldRd0, llGetIReg(rD+0));
16507 assign(oldRd1, llGetIReg(rD+1));
16567 assign(srcR, getIRegA(rM));
16568 assign(srcL, getIRegA(rN));
16569 assign(res, binop(Iop_Add32,
16597 assign(srcR, getIRegA(rM));
16598 assign(srcL, getIRegA(rN));
16599 assign(res, binop(Iop_Add32,
16621 assign(rMt, getIRegA(rM));
16639 assign(irt_rM, getIRegA(rM));
16640 assign(irt_hi,
16646 assign(irt_low,
16652 assign(irt_res,
16667 assign(arg, getIRegA(rM));
17605 ITSTATE. Assign it to condT. Also, generate new
17632 assign(z32, mkU32(0));
17645 // assign(new_itstate,
17661 // assign(condT1,
17676 // assign(condT, IRExpr_ITE(
17684 assign(condT, mkU32(1));
17692 // assign(notInITt,
17702 // assign(cond_AND_notInIT_T,
17713 assign(new_itstate,
17726 assign(condT1,
17753 we can simply do "assign(condT, mkexpr(condT1))", and the
17757 assign(condT, IRExpr_ITE(
17771 assign(notInITt,
17781 assign(cond_AND_notInIT_T,
17834 assign( argL, getIRegT(rN) );
17835 assign( argR, getIRegT(rM) );
17850 assign( oldC, mk_armg_calculate_flag_c() );
17851 assign( oldV, mk_armg_calculate_flag_v() );
17852 assign( res, binop(Iop_And32, getIRegT(rN), getIRegT(rM)) );
17866 assign(arg, getIRegT(rM));
17867 assign(zero, mkU32(0));
17883 assign( oldV, mk_armg_calculate_flag_v() );
17884 assign( oldC, mk_armg_calculate_flag_c() );
17885 assign(res, unop(Iop_Not32, getIRegT(rM)));
17913 assign( oldV, mk_armg_calculate_flag_v() );
17914 assign( oldC, mk_armg_calculate_flag_c() );
17915 assign
17933 assign( oldV, mk_armg_calculate_flag_v() );
17934 assign( oldC, mk_armg_calculate_flag_c() );
17935 assign( res, binop(Iop_And32, getIRegT(rD),
17955 assign(argL, getIRegT(rD));
17956 assign(argR, getIRegT(rM));
17957 assign(oldC, mk_armg_calculate_flag_c());
17958 assign(res, binop(Iop_Add32,
17978 assign(argL, getIRegT(rD));
17979 assign(argR, getIRegT(rM));
17980 assign(oldC, mk_armg_calculate_flag_c());
17981 assign(res, binop(Iop_Sub32,
18057 assign(rSt, getIRegT(rS));
18058 assign(rDt, getIRegT(rD));
18059 assign(oldV, mk_armg_calculate_flag_v());
18105 assign(arg, getIRegT(rM));
18120 assign(irt_rM, getIRegT(rM));
18121 assign(irt_hi,
18127 assign(irt_low,
18133 assign(irt_res,
18182 assign( dst, getIRegT(rM) );
18185 assign( dst, mkU32(guest_R15_curr_instr_notENC + 4) );
18208 assign( dst, getIRegT(rM) );
18265 assign( res, binop(Iop_Add32, getIRegT(rD), getIRegT(rM) ));
18295 assign( argL, getIRegT(rN) );
18296 assign( argR, getIRegT(rM) );
18315 assign( val, getIRegT(rM) );
18353 assign(t, mkU32(newITSTATE));
18373 assign( kond, binop(bOP ? Iop_CmpNE32 : Iop_CmpEQ32,
18433 assign(newSP, binop(Iop_Sub32, getIRegT(13), mkU32(4 * nRegs)));
18439 assign(base, binop(Iop_And32, mkexpr(newSP), mkU32(~3)));
18486 assign(oldSP, getIRegT(13));
18491 assign(base, binop(Iop_And32, mkexpr(oldSP), mkU32(~3)));
18497 assign(newSP, binop(Iop_Add32, mkexpr(oldSP),
18515 assign( newPC, loadLE( Ity_I32,
18553 assign( argL, getIRegT(rN) );
18554 assign( argR, mkU32(uimm3) );
18574 assign( argL, getIRegT(rN) );
18575 assign( argR, getIRegT(rM) );
18715 assign( argL, getIRegT(rN) );
18716 assign( argR, mkU32(uimm8) );
18755 assign( argL, getIRegT(rN) );
18756 assign( argR, mkU32(uimm8) );
18770 assign( oldV, mk_armg_calculate_flag_v() );
18771 assign( oldC, mk_armg_calculate_flag_c() );
18772 assign( res, mkU32(uimm8) );
18787 assign(ea, binop(Iop_Add32,
18913 assign(oldRn, getIRegT(rN));
18914 assign(base, binop(Iop_And32, mkexpr(oldRn), mkU32(~3U)));
18967 assign(oldRn, getIRegT(rN));
18968 assign(base, binop(Iop_And32, mkexpr(oldRn), mkU32(~3U)));
19005 assign(rMt, getIRegT(rM));
19006 assign(oldV, mk_armg_calculate_flag_v());
19080 assign( kondT, mk_armg_calculate_condition(cond) );
19290 assign(argL, getIRegT(rN));
19291 assign(argR, mkU32(imm32));
19292 assign(res, binop(Iop_Add32, mkexpr(argL), mkexpr(argR)));
19317 assign(argL, getIRegT(rN));
19318 assign(argR, mkU32(imm12));
19319 assign(res, binop(Iop_Add32, mkexpr(argL), mkexpr(argR)));
19339 assign(argL, getIRegT(rN));
19340 assign(argR, mkU32(imm32));
19365 assign(argL, getIRegT(rN));
19366 assign(argR, mkU32(imm32));
19367 assign(res, binop(isTST ? Iop_And32 : Iop_Xor32,
19369 assign( oldV, mk_armg_calculate_flag_v() );
19370 assign( oldC, updC
19399 assign(argL, getIRegT(rN));
19400 assign(argR, mkU32(imm32));
19401 assign(res, isRSB
19432 assign(argL, getIRegT(rN));
19433 assign(argR, mkU32(imm12));
19434 assign(res, binop(Iop_Sub32, mkexpr(argL), mkexpr(argR)));
19458 assign(argL, getIRegT(rN));
19459 assign(argR, mkU32(imm32));
19460 assign(oldC, mk_armg_calculate_flag_c() );
19465 assign(res,
19476 assign(res,
19527 assign(argL, getIRegT(rN));
19528 assign(argR, mkU32(notArgR ? ~imm32 : imm32));
19529 assign(res, binop(op, mkexpr(argL), mkexpr(argR)));
19534 assign( oldV, mk_armg_calculate_flag_v() );
19535 assign( oldC, updC
19588 assign(argL, getIRegT(rN));
19591 assign(rMt, getIRegT(rM));
19599 assign(res, swap
19643 assign(argL, getIRegT(rN));
19646 assign(rMt, getIRegT(rM));
19649 assign(oldC, mk_armg_calculate_flag_c());
19661 assign(res,
19672 assign(res,
19725 assign(rNt, getIRegT(rN));
19728 assign(rMt, getIRegT(rM));
19740 assign(res, binop(op, mkexpr(rNt),
19743 assign(res, binop(op, mkexpr(rNt), mkexpr(argR)));
19749 assign( oldV, mk_armg_calculate_flag_v() );
19781 assign(rNt, getIRegT(rN));
19782 assign(rMt, getIRegT(rM));
19788 assign(oldV, mk_armg_calculate_flag_v());
19816 assign(rNt, getIRegT(rN));
19825 assign(res, isMVN ? unop(Iop_Not32, mkexpr(oldRn))
19831 assign( oldV, mk_armg_calculate_flag_v() );
19856 assign(argL, getIRegT(rN));
19859 assign(rMt, getIRegT(rM));
19868 assign( oldV, mk_armg_calculate_flag_v() );
19871 assign(res, binop(isTST ? Iop_And32 : Iop_Xor32,
19896 assign(argL, getIRegT(rN));
19899 assign(rMt, getIRegT(rM));
19928 assign(res, mkU32(isMVN ? ~imm32 : imm32));
19933 assign( oldV, mk_armg_calculate_flag_v() );
19934 assign( oldC, updC
19969 assign(res,
20058 assign(preAddr, getIRegT(rN));
20061 assign(postAddr, binop(bU == 1 ? Iop_Add32 : Iop_Sub32,
20080 assign(oldRt, getIRegT(rT));
20109 assign(llOldRt, llGetIReg(rT));
20245 assign(transAddr,
20254 assign(oldRt, getIRegT(rT));
20277 assign(llOldRt, llGetIReg(rT));
20401 assign(rNt, binop(Iop_And32, getIRegT(15), mkU32(~3)));
20403 assign(rNt, getIRegT(rN));
20407 assign(transAddr,
20412 assign(oldRt, getIRegT(rT));
20415 assign(llOldRt, llGetIReg(rT));
20503 assign(preAddr, 15 == rN
20508 assign(postAddr, binop(bU == 1 ? Iop_Add32 : Iop_Sub32,
20530 assign(oldRt, getIRegT(rT));
20531 assign(oldRt2, getIRegT(rT2));
20541 assign(oldRt, llGetIReg(rT));
20542 assign(oldRt2, llGetIReg(rT2));
20602 assign( kondT, mk_armg_calculate_condition(cond) );
20679 assign(delta, unop(Iop_16Uto32, loadLE(Ity_I16, ea)));
20681 assign(delta, unop(Iop_8Uto32, loadLE(Ity_I8, ea)));
20723 assign(src, getIRegT(rN));
20724 assign(tmp, binop(Iop_And32,
20727 assign(res, binop(isU ? Iop_Shr32 : Iop_Sar32,
20763 assign(srcT, getIRegT(rM));
20764 assign(rotT, genROR32(srcT, 8 * rot));
20768 assign(dstT, unop(Iop_8Uto32,
20773 assign(dstT, unop(Iop_16Uto32,
20778 assign(dstT, unop(Iop_8Sto32,
20783 assign(dstT, unop(Iop_16Sto32,
20788 assign(dstT, binop(Iop_And32, mkexpr(rotT),
20795 assign(lo32, binop(Iop_And32, mkexpr(rotT), mkU32(0xFF)));
20796 assign(hi32, binop(Iop_Shr32, mkexpr(rotT), mkU8(16)));
20797 assign(
20828 assign(res, binop(Iop_Mul32, getIRegT(rN), getIRegT(rM)));
20845 assign(argL, getIRegT(rN));
20846 assign(argR, getIRegT(rM));
20847 assign(res, binop(Iop_DivS32, mkexpr(argL), mkexpr(argR)));
20864 assign(argL, getIRegT(rN));
20865 assign(argR, getIRegT(rM));
20866 assign(res, binop(Iop_DivU32, mkexpr(argL), mkexpr(argR)));
20884 assign(res, binop(isU ? Iop_MullU32 : Iop_MullS32,
20906 assign(res,
20953 assign( argL, getIRegT(rM));
20954 assign( argR, getIRegT(rN));
20955 assign( old, binop(Iop_32HLto64, getIRegT(rDhi), getIRegT(rDlo)) );
20956 assign( res, binop(Iop_Add64,
20959 assign( resHi, unop(Iop_64HIto32, mkexpr(res)) );
20960 assign( resLo, unop(Iop_64to32, mkexpr(res)) );
20984 assign( argN, getIRegT(rN) );
20985 assign( argM, getIRegT(rM) );
20986 assign( argDhi, getIRegT(rDhi) );
20987 assign( argDlo, getIRegT(rDlo) );
20988 assign( res,
20994 assign( resHi, unop(Iop_64HIto32, mkexpr(res)) );
20995 assign( resLo, unop(Iop_64to32, mkexpr(res)) );
21084 assign(src, rN == 15 ? mkU32(0) : getIRegT(rN));
21085 assign(olddst, getIRegT(rD));
21086 assign(newdst,
21124 assign(srcR, getIRegT(rM));
21125 assign(srcL, getIRegT(rN));
21126 assign(res, binop(Iop_Add32,
21153 assign(srcR, getIRegT(rM));
21154 assign(srcL, getIRegT(rN));
21155 assign(res, binop(Iop_Add32,
21177 assign(arg, getIRegT(rM1));
21178 assign(res, IRExpr_ITE(
21198 assign(arg, getIRegT(rM1));
21218 assign(arg, getIRegT(rM1));
21238 assign(irt_rM, getIRegT(rM1));
21239 assign(irt_hi,
21245 assign(irt_low,
21251 assign(irt_res,
21268 assign(rNt, getIRegT(rN));
21373 assign(resSC32,
21402 assign(resSC32,
21426 assign(data, binop(Iop_32HLto64, getIRegT(rT2), getIRegT(rT)));
21432 assign(resSC32,
22062 assign(hi32, unop(Iop_64HIto32, mkexpr(v64)) );
22063 assign(lo32, unop(Iop_64to32, mkexpr(v64)) );
22064 if (out3) assign(*out3, binop(Iop_Shr32, mkexpr(hi32), mkU8(16)));
22065 if (out2) assign(*out2, binop(Iop_And32, mkexpr(hi32), mkU32(0xFFFF)));
22066 if (out1) assign(*out1, binop(Iop_Shr32, mkexpr(lo32), mkU8(16)));
22067 if (out0) assign(*out0, binop(Iop_And32, mkexpr(lo32), mkU32(0xFFFF)));
22076 assign(hi32,
22080 assign(lo32,
22085 assign(res, binop(Iop_32HLto64, mkexpr(hi32), mkexpr(lo32)));
22157 assign(hi32, unop(Iop_64HIto32, mkexpr(v64)) );
22158 assign(lo32, unop(Iop_64to32, mkexpr(v64)) );
22160 assign(*out7, binop(Iop_And32,
22164 assign(*out6, binop(Iop_And32,
22168 assign(*out5, binop(Iop_And32,
22172 assign(*out4, binop(Iop_And32, mkexpr(hi32), mkU32(0xFF)));
22174 assign(*out3, binop(Iop_And32,
22178 assign(*out2, binop(Iop_And32,
22182 assign(*out1, binop(Iop_And32,
22186 assign(*out0, binop(Iop_And32, mkexpr(lo32), mkU32(0xFF)));
22194 assign(hi32,
22208 assign(lo32,
22223 assign(res, binop(Iop_32HLto64, mkexpr(hi32), mkexpr(lo32)));