[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 01/28] tcg: Add flags argument to bswap opcodes
From: |
Peter Maydell |
Subject: |
Re: [PATCH 01/28] tcg: Add flags argument to bswap opcodes |
Date: |
Mon, 21 Jun 2021 14:41:21 +0100 |
On Mon, 14 Jun 2021 at 09:43, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> This will eventually simplify front-end usage, and will allow
> backends to unset TCG_TARGET_HAS_MEMORY_BSWAP without loss of
> optimization.
>
> The argument is added during expansion, not currently exposed
> to the front end translators. Non-zero values are not yet
> supported by any backends.
Here we say non-zero values are not yet supported by the backend...
> diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
> index dcc2ed0bbc..dc65577e2f 100644
> --- a/tcg/tcg-op.c
> +++ b/tcg/tcg-op.c
> @@ -1005,7 +1005,8 @@ void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg)
> void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg)
> {
> if (TCG_TARGET_HAS_bswap16_i32) {
> - tcg_gen_op2_i32(INDEX_op_bswap16_i32, ret, arg);
> + tcg_gen_op3i_i32(INDEX_op_bswap16_i32, ret, arg,
> + TCG_BSWAP_IZ | TCG_BSWAP_OZ);
> } else {
> TCGv_i32 t0 = tcg_temp_new_i32();
...but here we pass a non-zero value...
> @@ -1661,7 +1662,8 @@ void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg)
> tcg_gen_bswap16_i32(TCGV_LOW(ret), TCGV_LOW(arg));
> tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
> } else if (TCG_TARGET_HAS_bswap16_i64) {
> - tcg_gen_op2_i64(INDEX_op_bswap16_i64, ret, arg);
> + tcg_gen_op3i_i64(INDEX_op_bswap16_i64, ret, arg,
> + TCG_BSWAP_IZ | TCG_BSWAP_OZ);
> } else {
> TCGv_i64 t0 = tcg_temp_new_i64();
>
...and again here...
> @@ -1680,7 +1682,8 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg)
> tcg_gen_bswap32_i32(TCGV_LOW(ret), TCGV_LOW(arg));
> tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
> } else if (TCG_TARGET_HAS_bswap32_i64) {
> - tcg_gen_op2_i64(INDEX_op_bswap32_i64, ret, arg);
> + tcg_gen_op3i_i64(INDEX_op_bswap32_i64, ret, arg,
> + TCG_BSWAP_IZ | TCG_BSWAP_OZ);
> } else {
> TCGv_i64 t0 = tcg_temp_new_i64();
> TCGv_i64 t1 = tcg_temp_new_i64();
...and here.
thanks
-- PMM
- Re: [PATCH 03/28] tcg/aarch64: Support bswap flags, (continued)
- [PATCH 04/28] tcg/arm: Support bswap flags, Richard Henderson, 2021/06/14
- [PATCH 05/28] tcg/ppc: Split out tcg_out_ext{8,16,32}s, Richard Henderson, 2021/06/14
- [PATCH 01/28] tcg: Add flags argument to bswap opcodes, Richard Henderson, 2021/06/14
- Re: [PATCH 01/28] tcg: Add flags argument to bswap opcodes, Richard Henderson, 2021/06/21
[PATCH 02/28] tcg/i386: Support bswap flags, Richard Henderson, 2021/06/14
[PATCH 06/28] tcg/ppc: Split out tcg_out_sari{32,64}, Richard Henderson, 2021/06/14
[PATCH 08/28] tcg/ppc: Split out tcg_out_bswap32, Richard Henderson, 2021/06/14