Lines Matching refs:dest

824 /* Generate dest op= src.  Uses the same ARITH_* codes as tgen_arithi.  */
825 static inline void tgen_arithr(TCGContext *s, int subop, int dest, int src)
831 tcg_out_modrm(s, OPC_ARITH_GvEv + (subop << 3) + ext, dest, src);
1247 static void tcg_out_ext8u(TCGContext *s, TCGReg dest, TCGReg src)
1251 tcg_out_modrm(s, OPC_MOVZBL + P_REXB_RM, dest, src);
1254 static void tcg_out_ext8s(TCGContext *s, TCGType type, TCGReg dest, TCGReg src)
1259 tcg_out_modrm(s, OPC_MOVSBL + P_REXB_RM + rexw, dest, src);
1262 static void tcg_out_ext16u(TCGContext *s, TCGReg dest, TCGReg src)
1265 tcg_out_modrm(s, OPC_MOVZWL, dest, src);
1268 static void tcg_out_ext16s(TCGContext *s, TCGType type, TCGReg dest, TCGReg src)
1272 tcg_out_modrm(s, OPC_MOVSWL + rexw, dest, src);
1275 static void tcg_out_ext32u(TCGContext *s, TCGReg dest, TCGReg src)
1278 tcg_out_modrm(s, OPC_MOVL_GvEv, dest, src);
1281 static void tcg_out_ext32s(TCGContext *s, TCGReg dest, TCGReg src)
1284 tcg_out_modrm(s, OPC_MOVSLQ, dest, src);
1287 static void tcg_out_exts_i32_i64(TCGContext *s, TCGReg dest, TCGReg src)
1289 tcg_out_ext32s(s, dest, src);
1292 static void tcg_out_extu_i32_i64(TCGContext *s, TCGReg dest, TCGReg src)
1294 if (dest != src) {
1295 tcg_out_ext32u(s, dest, src);
1299 static void tcg_out_extrl_i64_i32(TCGContext *s, TCGReg dest, TCGReg src)
1301 tcg_out_ext32u(s, dest, src);
1528 TCGArg dest, TCGArg arg1, TCGArg arg2,
1572 tgen_arithr(s, ARITH_SBB + (neg ? rexw : 0), dest, dest);
1575 tcg_out_modrm(s, OPC_GRP3_Ev + rexw, EXT3_NOT, dest);
1578 tgen_arithi(s, ARITH_ADD, dest, 1, 0);
1581 tcg_out_modrm(s, OPC_GRP3_Ev, EXT3_NEG, dest);
1591 tcg_out_mov(s, rexw ? TCG_TYPE_I64 : TCG_TYPE_I32, dest, arg1);
1593 tcg_out_modrm(s, OPC_GRP3_Ev + rexw, EXT3_NOT, dest);
1596 dest, rexw ? 63 : 31);
1606 * If dest does not overlap the inputs, clearing it first is preferred.
1607 * The XOR breaks any false dependency for the low-byte write to dest,
1611 if (dest != arg1 && (const_arg2 || dest != arg2)) {
1612 tgen_arithr(s, ARITH_XOR, dest, dest);
1617 tcg_out_modrm(s, OPC_SETCC | tcg_cond_to_jcc[cond], 0, dest);
1620 tcg_out_ext8u(s, dest, dest);
1623 tcg_out_modrm(s, OPC_GRP3_Ev + rexw, EXT3_NEG, dest);
1672 TCGReg dest, TCGReg v1)
1675 tcg_out_modrm(s, OPC_CMOVCC | tcg_cond_to_jcc[cond] | rexw, dest, v1);
1679 tcg_out_mov(s, TCG_TYPE_I32, dest, v1);
1685 TCGReg dest, TCGReg c1, TCGArg c2, int const_c2,
1689 tcg_out_cmov(s, cond, rexw, dest, v1);
1692 static void tcg_out_ctz(TCGContext *s, int rexw, TCGReg dest, TCGReg arg1,
1696 tcg_out_modrm(s, OPC_TZCNT + rexw, dest, arg1);
1700 tcg_debug_assert(dest != arg2);
1701 tcg_out_cmov(s, TCG_COND_LTU, rexw, dest, arg2);
1704 tcg_debug_assert(dest != arg2);
1705 tcg_out_modrm(s, OPC_BSF + rexw, dest, arg1);
1706 tcg_out_cmov(s, TCG_COND_EQ, rexw, dest, arg2);
1710 static void tcg_out_clz(TCGContext *s, int rexw, TCGReg dest, TCGReg arg1,
1714 tcg_out_modrm(s, OPC_LZCNT + rexw, dest, arg1);
1718 tcg_debug_assert(dest != arg2);
1719 tcg_out_cmov(s, TCG_COND_LTU, rexw, dest, arg2);
1723 tcg_debug_assert(dest != arg1);
1724 tcg_debug_assert(dest != arg2);
1727 tcg_out_modrm(s, OPC_BSR + rexw, dest, arg1);
1728 tgen_arithi(s, ARITH_XOR + rexw, dest, rexw ? 63 : 31, 0);
1732 tcg_out_cmov(s, TCG_COND_EQ, rexw, dest, arg2);
1736 static void tcg_out_branch(TCGContext *s, int call, const tcg_insn_unit *dest)
1738 intptr_t disp = tcg_pcrel_diff(s, dest) - 5;
1750 new_pool_label(s, (uintptr_t)dest, R_386_PC32, s->code_ptr, -4);
1755 static void tcg_out_call(TCGContext *s, const tcg_insn_unit *dest,
1758 tcg_out_branch(s, 1, dest);
1777 static void tcg_out_jmp(TCGContext *s, const tcg_insn_unit *dest)
1779 tcg_out_branch(s, 0, dest);
2520 /* Watch out for dest = src + dest, since we've removed