qemu-s390x
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH 19/70] target/hexagon/idef-parser: Use gen_constant for gen_e


From: Taylor Simpson
Subject: RE: [PATCH 19/70] target/hexagon/idef-parser: Use gen_constant for gen_extend_tcg_width_op
Date: Mon, 27 Feb 2023 21:55:08 +0000


> -----Original Message-----
> From: Richard Henderson <richard.henderson@linaro.org>
> Sent: Sunday, February 26, 2023 10:42 PM
> To: qemu-devel@nongnu.org
> Cc: qemu-arm@nongnu.org; qemu-ppc@nongnu.org; qemu-
> riscv@nongnu.org; qemu-s390x@nongnu.org; jcmvbkbc@gmail.com;
> kbastian@mail.uni-paderborn.de; ysato@users.sourceforge.jp;
> gaosong@loongson.cn; jiaxun.yang@flygoat.com; Taylor Simpson
> <tsimpson@quicinc.com>; ale@rev.ng; mrolnik@gmail.com;
> edgar.iglesias@gmail.com
> Subject: [PATCH 19/70] target/hexagon/idef-parser: Use gen_constant for
> gen_extend_tcg_width_op
> 
> We already have a temporary, res, which we can use for the intermediate
> shift result.  Simplify the constant to -1 instead of 0xf*f.
> This was the last use of gen_tmp_value, so remove it.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  target/hexagon/idef-parser/parser-helpers.c | 30 +++------------------
>  1 file changed, 3 insertions(+), 27 deletions(-)
> 
> diff --git a/target/hexagon/idef-parser/parser-helpers.c
> b/target/hexagon/idef-parser/parser-helpers.c
> index c0e6f2190c..e1a55412c8 100644
> --- a/target/hexagon/idef-parser/parser-helpers.c
> +++ b/target/hexagon/idef-parser/parser-helpers.c
> @@ -1120,15 +1100,11 @@ static
> HexValue gen_extend_tcg_width_op(Context *c,
>      OUT(c, locp, "tcg_gen_subfi_i", &dst_width);
>      OUT(c, locp, "(", &shift, ", ", &dst_width, ", ", &src_width_m, ");\n");
>      if (signedness == UNSIGNED) {
> -        const char *mask_str = (dst_width == 32)
> -            ? "0xffffffff"
> -            : "0xffffffffffffffff";
> -        HexValue mask = gen_tmp_value(c, locp, mask_str,
> -                                     dst_width, UNSIGNED);
> +        HexValue mask = gen_constant(c, locp, "-1", dst_width,
> + UNSIGNED);
>          OUT(c, locp, "tcg_gen_shr_i", &dst_width, "(",
> -            &mask, ", ", &mask, ", ", &shift, ");\n");
> +            &res, ", ", &mask, ", ", &shift, ");\n");
>          OUT(c, locp, "tcg_gen_and_i", &dst_width, "(",
> -            &res, ", ", value, ", ", &mask, ");\n");
> +            &res, ", ", &res, ", ", value, ");\n");

What's the advantage of putting the result of the tcg_gen_shr into res instead 
of mask?  Is there something in TCG code generation that takes advantage?


>      } else {
>          OUT(c, locp, "tcg_gen_shl_i", &dst_width, "(",
>              &res, ", ", value, ", ", &shift, ");\n");



reply via email to

[Prev in Thread] Current Thread [Next in Thread]