On Mon, 14 Jun 2021 at 09:43, Richard Henderson <richard.hender...@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