[PATCH] Hexagon (gen_tcg_funcs.py): avoid duplicated tcg code on A_CVI_NEW

Matheus Tavares Bernardino posted 1 patch 1 year, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/fa706b192b2a3a0ffbd399fa8dbf0d5b2c5b82d9.1664568492.git.quic._5Fmathbern@quicinc.com
Maintainers: Taylor Simpson <tsimpson@quicinc.com>
target/hexagon/gen_tcg_funcs.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] Hexagon (gen_tcg_funcs.py): avoid duplicated tcg code on A_CVI_NEW
Posted by Matheus Tavares Bernardino 1 year, 6 months ago
Hexagon instructions with the A_CVI_NEW attribute produce a vector value
that can be used in the same packet. The python function responsible for
generating code for such instructions has a typo ("if" instead of
"elif"), which makes genptr_dst_write_ext() be executed twice, thus also
generating the same tcg code twice. Fortunately, this doesn't cause any
problems for correctness, but it is less efficient than it could be. Fix
it by using an "elif" and avoiding the unnecessary extra code gen.

Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
---
 target/hexagon/gen_tcg_funcs.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py
index d72c689ad7..6dea02b0b9 100755
--- a/target/hexagon/gen_tcg_funcs.py
+++ b/target/hexagon/gen_tcg_funcs.py
@@ -548,7 +548,7 @@ def genptr_dst_write_opn(f,regtype, regid, tag):
         if (hex_common.is_hvx_reg(regtype)):
             if (hex_common.is_new_result(tag)):
                 genptr_dst_write_ext(f, tag, regtype, regid, "EXT_NEW")
-            if (hex_common.is_tmp_result(tag)):
+            elif (hex_common.is_tmp_result(tag)):
                 genptr_dst_write_ext(f, tag, regtype, regid, "EXT_TMP")
             else:
                 genptr_dst_write_ext(f, tag, regtype, regid, "EXT_DFL")
-- 
2.37.2
Re: [PATCH] Hexagon (gen_tcg_funcs.py): avoid duplicated tcg code on A_CVI_NEW
Posted by Philippe Mathieu-Daudé via 1 year, 6 months ago
On 30/9/22 22:08, Matheus Tavares Bernardino wrote:
> Hexagon instructions with the A_CVI_NEW attribute produce a vector value
> that can be used in the same packet. The python function responsible for
> generating code for such instructions has a typo ("if" instead of
> "elif"), which makes genptr_dst_write_ext() be executed twice, thus also
> generating the same tcg code twice. Fortunately, this doesn't cause any
> problems for correctness, but it is less efficient than it could be. Fix
> it by using an "elif" and avoiding the unnecessary extra code gen.
> 
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
>   target/hexagon/gen_tcg_funcs.py | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>


RE: [PATCH] Hexagon (gen_tcg_funcs.py): avoid duplicated tcg code on A_CVI_NEW
Posted by Taylor Simpson 1 year, 6 months ago

> -----Original Message-----
> From: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> Sent: Friday, September 30, 2022 3:08 PM
> To: qemu-devel@nongnu.org
> Cc: Taylor Simpson <tsimpson@quicinc.com>
> Subject: [PATCH] Hexagon (gen_tcg_funcs.py): avoid duplicated tcg code on
> A_CVI_NEW
> 
> Hexagon instructions with the A_CVI_NEW attribute produce a vector value
> that can be used in the same packet. The python function responsible for
> generating code for such instructions has a typo ("if" instead of "elif"), which
> makes genptr_dst_write_ext() be executed twice, thus also generating the
> same tcg code twice. Fortunately, this doesn't cause any problems for
> correctness, but it is less efficient than it could be. Fix it by using an "elif" and
> avoiding the unnecessary extra code gen.
> 
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
>  target/hexagon/gen_tcg_funcs.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/hexagon/gen_tcg_funcs.py
> b/target/hexagon/gen_tcg_funcs.py index d72c689ad7..6dea02b0b9 100755
> --- a/target/hexagon/gen_tcg_funcs.py
> +++ b/target/hexagon/gen_tcg_funcs.py
> @@ -548,7 +548,7 @@ def genptr_dst_write_opn(f,regtype, regid, tag):
>          if (hex_common.is_hvx_reg(regtype)):
>              if (hex_common.is_new_result(tag)):
>                  genptr_dst_write_ext(f, tag, regtype, regid, "EXT_NEW")
> -            if (hex_common.is_tmp_result(tag)):
> +            elif (hex_common.is_tmp_result(tag)):
>                  genptr_dst_write_ext(f, tag, regtype, regid, "EXT_TMP")
>              else:
>                  genptr_dst_write_ext(f, tag, regtype, regid, "EXT_DFL")

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Re: [PATCH] Hexagon (gen_tcg_funcs.py): avoid duplicated tcg code on A_CVI_NEW
Posted by Richard Henderson 1 year, 6 months ago
On 9/30/22 13:08, Matheus Tavares Bernardino wrote:
> Hexagon instructions with the A_CVI_NEW attribute produce a vector value
> that can be used in the same packet. The python function responsible for
> generating code for such instructions has a typo ("if" instead of
> "elif"), which makes genptr_dst_write_ext() be executed twice, thus also
> generating the same tcg code twice. Fortunately, this doesn't cause any
> problems for correctness, but it is less efficient than it could be. Fix
> it by using an "elif" and avoiding the unnecessary extra code gen.
> 
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
>   target/hexagon/gen_tcg_funcs.py | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py
> index d72c689ad7..6dea02b0b9 100755
> --- a/target/hexagon/gen_tcg_funcs.py
> +++ b/target/hexagon/gen_tcg_funcs.py
> @@ -548,7 +548,7 @@ def genptr_dst_write_opn(f,regtype, regid, tag):
>           if (hex_common.is_hvx_reg(regtype)):
>               if (hex_common.is_new_result(tag)):
>                   genptr_dst_write_ext(f, tag, regtype, regid, "EXT_NEW")
> -            if (hex_common.is_tmp_result(tag)):
> +            elif (hex_common.is_tmp_result(tag)):
>                   genptr_dst_write_ext(f, tag, regtype, regid, "EXT_TMP")
>               else:
>                   genptr_dst_write_ext(f, tag, regtype, regid, "EXT_DFL")

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~