[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 15/36] tcg: Use tcg_constant_{i32, i64} with tcg plugins
From: |
Alex Bennée |
Subject: |
Re: [PATCH v2 15/36] tcg: Use tcg_constant_{i32, i64} with tcg plugins |
Date: |
Wed, 22 Apr 2020 18:18:43 +0100 |
User-agent: |
mu4e 1.4.1; emacs 28.0.50 |
Richard Henderson <address@hidden> writes:
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> accel/tcg/plugin-gen.c | 49 +++++++++++++++++++-----------------------
> 1 file changed, 22 insertions(+), 27 deletions(-)
>
> diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
> index 51580d51a0..e5dc9d0ca9 100644
> --- a/accel/tcg/plugin-gen.c
> +++ b/accel/tcg/plugin-gen.c
> @@ -284,8 +284,8 @@ static TCGOp *copy_extu_i32_i64(TCGOp **begin_op, TCGOp
> *op)
> if (TCG_TARGET_REG_BITS == 32) {
> /* mov_i32 */
> op = copy_op(begin_op, op, INDEX_op_mov_i32);
> - /* movi_i32 */
> - op = copy_op(begin_op, op, INDEX_op_movi_i32);
> + /* mov_i32 w/ $0 */
> + op = copy_op(begin_op, op, INDEX_op_mov_i32);
> } else {
> /* extu_i32_i64 */
> op = copy_op(begin_op, op, INDEX_op_extu_i32_i64);
> @@ -306,39 +306,34 @@ static TCGOp *copy_mov_i64(TCGOp **begin_op, TCGOp *op)
> return op;
> }
>
> -static TCGOp *copy_movi_i64(TCGOp **begin_op, TCGOp *op, uint64_t v)
> -{
> - if (TCG_TARGET_REG_BITS == 32) {
> - /* 2x movi_i32 */
> - op = copy_op(begin_op, op, INDEX_op_movi_i32);
> - op->args[1] = v;
> -
> - op = copy_op(begin_op, op, INDEX_op_movi_i32);
> - op->args[1] = v >> 32;
> - } else {
> - /* movi_i64 */
> - op = copy_op(begin_op, op, INDEX_op_movi_i64);
> - op->args[1] = v;
> - }
> - return op;
> -}
> -
> static TCGOp *copy_const_ptr(TCGOp **begin_op, TCGOp *op, void *ptr)
> {
> if (UINTPTR_MAX == UINT32_MAX) {
> - /* movi_i32 */
> - op = copy_op(begin_op, op, INDEX_op_movi_i32);
> - op->args[1] = (uintptr_t)ptr;
> + /* mov_i32 */
> + op = copy_op(begin_op, op, INDEX_op_mov_i32);
> + op->args[1] = tcgv_i32_arg(tcg_constant_i32((uintptr_t)ptr));
> } else {
> - /* movi_i64 */
> - op = copy_movi_i64(begin_op, op, (uint64_t)(uintptr_t)ptr);
> + /* mov_i64 */
> + op = copy_op(begin_op, op, INDEX_op_mov_i64);
> + op->args[1] = tcgv_i64_arg(tcg_constant_i64((uintptr_t)ptr));
> }
> return op;
> }
>
> static TCGOp *copy_const_i64(TCGOp **begin_op, TCGOp *op, uint64_t v)
> {
> - return copy_movi_i64(begin_op, op, v);
> + if (TCG_TARGET_REG_BITS == 32) {
> + /* 2x mov_i32 */
> + op = copy_op(begin_op, op, INDEX_op_mov_i32);
> + op->args[1] = tcgv_i32_arg(tcg_constant_i32(v));
> + op = copy_op(begin_op, op, INDEX_op_mov_i32);
> + op->args[1] = tcgv_i32_arg(tcg_constant_i32(v >> 32));
> + } else {
> + /* mov_i64 */
> + op = copy_op(begin_op, op, INDEX_op_mov_i64);
> + op->args[1] = tcgv_i64_arg(tcg_constant_i64(v));
> + }
> + return op;
> }
>
> static TCGOp *copy_extu_tl_i64(TCGOp **begin_op, TCGOp *op)
> @@ -486,8 +481,8 @@ static TCGOp *append_mem_cb(const struct
> qemu_plugin_dyn_cb *cb,
>
> tcg_debug_assert(type == PLUGIN_GEN_CB_MEM);
>
> - /* const_i32 == movi_i32 ("info", so it remains as is) */
> - op = copy_op(&begin_op, op, INDEX_op_movi_i32);
> + /* const_i32 == mov_i32 ("info", so it remains as is) */
> + op = copy_op(&begin_op, op, INDEX_op_mov_i32);
>
> /* const_ptr */
> op = copy_const_ptr(&begin_op, op, cb->userp);
--
Alex Bennée
- Re: [PATCH v2 17/36] tcg/optimize: Adjust TempOptInfo allocation, (continued)
- [PATCH v2 18/36] tcg/optimize: Use tcg_constant_internal with constant folding, Richard Henderson, 2020/04/21
- [PATCH v2 21/36] tcg: Use tcg_out_dupi_vec from temp_load, Richard Henderson, 2020/04/21
- [PATCH v2 20/36] tcg: Remove movi and dupi opcodes, Richard Henderson, 2020/04/21
- [PATCH v2 15/36] tcg: Use tcg_constant_{i32,i64} with tcg plugins, Richard Henderson, 2020/04/21
- Re: [PATCH v2 15/36] tcg: Use tcg_constant_{i32, i64} with tcg plugins,
Alex Bennée <=
- [PATCH v2 10/36] tcg: Add temp_readonly, Richard Henderson, 2020/04/21
- [PATCH v2 22/36] tcg: Increase tcg_out_dupi_vec immediate to int64_t, Richard Henderson, 2020/04/21
- [PATCH v2 19/36] tcg/tci: Add special tci_movi_{i32,i64} opcodes, Richard Henderson, 2020/04/21
- [PATCH v2 23/36] tcg: Add tcg_reg_alloc_dup2, Richard Henderson, 2020/04/21
- [PATCH v2 24/36] tcg/i386: Use tcg_constant_vec with tcg vec expanders, Richard Henderson, 2020/04/21