All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Hexagon: minor cleanups to comments and python scripts
@ 2023-05-24 14:41 Matheus Tavares Bernardino
  2023-05-24 14:41 ` [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and 'numregs' vars Matheus Tavares Bernardino
  2023-05-24 14:41 ` [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments Matheus Tavares Bernardino
  0 siblings, 2 replies; 5+ messages in thread
From: Matheus Tavares Bernardino @ 2023-05-24 14:41 UTC (permalink / raw)
  To: qemu-devel; +Cc: tsimpson, bcain, quic_mliebel

These are two minor follow ups to the last Hexagon pull, updating some
stale code comments and removing undefined variables at python scripts.

Changes in v2:
- Patch 1: adjusted get_regtags() to filter out the unused regs,
           also removing the unused variables at the call sites.
- Patch 2: replaced outdated comments with pseudocode

v1: https://lore.kernel.org/qemu-devel/cover.1684873957.git.quic_mathbern@quicinc.com/

Matheus Tavares Bernardino (2):
  target/hexagon/*.py: clean up used 'toss' and 'numregs' vars
  Hexagon: fix outdated `hex_new_*` comments

 target/hexagon/genptr.c                 | 26 +++++++-------
 target/hexagon/translate.c              |  2 +-
 target/hexagon/gen_analyze_funcs.py     | 10 +++---
 target/hexagon/gen_helper_funcs.py      | 30 ++++++++--------
 target/hexagon/gen_helper_protos.py     | 22 ++++++------
 target/hexagon/gen_idef_parser_funcs.py |  4 +--
 target/hexagon/gen_op_regs.py           |  4 +--
 target/hexagon/gen_tcg_funcs.py         | 46 ++++++++++++-------------
 target/hexagon/hex_common.py            | 24 ++++++-------
 9 files changed, 83 insertions(+), 85 deletions(-)

-- 
2.37.2



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and 'numregs' vars
  2023-05-24 14:41 [PATCH v2 0/2] Hexagon: minor cleanups to comments and python scripts Matheus Tavares Bernardino
@ 2023-05-24 14:41 ` Matheus Tavares Bernardino
  2023-05-24 16:42   ` Taylor Simpson
  2023-05-24 14:41 ` [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments Matheus Tavares Bernardino
  1 sibling, 1 reply; 5+ messages in thread
From: Matheus Tavares Bernardino @ 2023-05-24 14:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: tsimpson, bcain, quic_mliebel, Alessandro Di Federico, Anton Johansson

Many Hexagon python scripts call hex_common.get_tagregs(), but only one
call site use the full reg structure given by this function. To make the
code cleaner, let's make get_tagregs() filter out the unused fields
(i.e. 'toss' and 'numregs'), properly removed the unused variables at
the call sites. The hex_common.bad_register() function is also adjusted
to work exclusively with 'regtype' and 'regid' args. For the single call
site that does use toss/numregs, we provide an optional parameter to
get_tagregs() which will restore the old full behavior.

Suggested-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
---
 target/hexagon/gen_analyze_funcs.py     | 10 +++---
 target/hexagon/gen_helper_funcs.py      | 30 ++++++++--------
 target/hexagon/gen_helper_protos.py     | 22 ++++++------
 target/hexagon/gen_idef_parser_funcs.py |  4 +--
 target/hexagon/gen_op_regs.py           |  4 +--
 target/hexagon/gen_tcg_funcs.py         | 46 ++++++++++++-------------
 target/hexagon/hex_common.py            | 24 ++++++-------
 7 files changed, 70 insertions(+), 70 deletions(-)

diff --git a/target/hexagon/gen_analyze_funcs.py b/target/hexagon/gen_analyze_funcs.py
index 00868cc6cb..c3b521abef 100755
--- a/target/hexagon/gen_analyze_funcs.py
+++ b/target/hexagon/gen_analyze_funcs.py
@@ -165,7 +165,7 @@ def analyze_opn_new(f, tag, regtype, regid, regno):
         hex_common.bad_register(regtype, regid)
 
 
-def analyze_opn(f, tag, regtype, regid, toss, numregs, i):
+def analyze_opn(f, tag, regtype, regid, i):
     if hex_common.is_pair(regid):
         analyze_opn_old(f, tag, regtype, regid, i)
     elif hex_common.is_single(regid):
@@ -174,9 +174,9 @@ def analyze_opn(f, tag, regtype, regid, toss, numregs, i):
         elif hex_common.is_new_val(regtype, regid, tag):
             analyze_opn_new(f, tag, regtype, regid, i)
         else:
-            hex_common.bad_register(regtype, regid, toss, numregs)
+            hex_common.bad_register(regtype, regid)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 ##
@@ -202,8 +202,8 @@ def gen_analyze_func(f, tag, regs, imms):
 
     i = 0
     ## Analyze all the registers
-    for regtype, regid, toss, numregs in regs:
-        analyze_opn(f, tag, regtype, regid, toss, numregs, i)
+    for regtype, regid in regs:
+        analyze_opn(f, tag, regtype, regid, i)
         i += 1
 
     has_generated_helper = not hex_common.skip_qemu_helper(
diff --git a/target/hexagon/gen_helper_funcs.py b/target/hexagon/gen_helper_funcs.py
index e80550f94e..ce21d3b688 100755
--- a/target/hexagon/gen_helper_funcs.py
+++ b/target/hexagon/gen_helper_funcs.py
@@ -87,9 +87,9 @@ def gen_helper_arg_opn(f, regtype, regid, i, tag):
         elif hex_common.is_new_val(regtype, regid, tag):
             gen_helper_arg_new(f, regtype, regid, i)
         else:
-            hex_common.bad_register(regtype, regid, toss, numregs)
+            hex_common.bad_register(regtype, regid)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 def gen_helper_arg_imm(f, immlett):
@@ -135,7 +135,7 @@ def gen_helper_dest_decl_opn(f, regtype, regid, i):
         else:
             gen_helper_dest_decl(f, regtype, regid, i)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 def gen_helper_src_var_ext(f, regtype, regid):
@@ -185,7 +185,7 @@ def gen_helper_return_opn(f, regtype, regid, i):
         else:
             gen_helper_return(f, regtype, regid, i)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 ##
@@ -208,7 +208,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
     numresults = 0
     numscalarresults = 0
     numscalarreadwrite = 0
-    for regtype, regid, toss, numregs in regs:
+    for regtype, regid in regs:
         if hex_common.is_written(regid):
             numresults += 1
             if hex_common.is_scalar_reg(regtype):
@@ -226,7 +226,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
         ## The return type of the function is the type of the destination
         ## register (if scalar)
         i = 0
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 if hex_common.is_pair(regid):
                     if hex_common.is_hvx_reg(regtype):
@@ -239,7 +239,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
                     else:
                         gen_helper_return_type(f, regtype, regid, i)
                 else:
-                    hex_common.bad_register(regtype, regid, toss, numregs)
+                    hex_common.bad_register(regtype, regid)
             i += 1
 
         if numscalarresults == 0:
@@ -248,7 +248,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
 
         ## Arguments include the vector destination operands
         i = 1
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 if hex_common.is_pair(regid):
                     if hex_common.is_hvx_reg(regtype):
@@ -262,12 +262,12 @@ def gen_helper_function(f, tag, tagregs, tagimms):
                         # This is the return value of the function
                         continue
                 else:
-                    hex_common.bad_register(regtype, regid, toss, numregs)
+                    hex_common.bad_register(regtype, regid)
                 i += 1
 
         ## For conditional instructions, we pass in the destination register
         if "A_CONDEXEC" in hex_common.attribdict[tag]:
-            for regtype, regid, toss, numregs in regs:
+            for regtype, regid in regs:
                 if hex_common.is_writeonly(regid) and not hex_common.is_hvx_reg(
                     regtype
                 ):
@@ -275,7 +275,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
                     i += 1
 
         ## Arguments to the helper function are the source regs and immediates
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_read(regid):
                 if hex_common.is_hvx_reg(regtype) and hex_common.is_readwrite(regid):
                     continue
@@ -315,12 +315,12 @@ def gen_helper_function(f, tag, tagregs, tagimms):
         ## Declare the return variable
         i = 0
         if "A_CONDEXEC" not in hex_common.attribdict[tag]:
-            for regtype, regid, toss, numregs in regs:
+            for regtype, regid in regs:
                 if hex_common.is_writeonly(regid):
                     gen_helper_dest_decl_opn(f, regtype, regid, i)
                 i += 1
 
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_read(regid):
                 if hex_common.is_pair(regid):
                     if hex_common.is_hvx_reg(regtype):
@@ -329,7 +329,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
                     if hex_common.is_hvx_reg(regtype):
                         gen_helper_src_var_ext(f, regtype, regid)
                 else:
-                    hex_common.bad_register(regtype, regid, toss, numregs)
+                    hex_common.bad_register(regtype, regid)
 
         if hex_common.need_slot(tag):
             if "A_LOAD" in hex_common.attribdict[tag]:
@@ -345,7 +345,7 @@ def gen_helper_function(f, tag, tagregs, tagimms):
             f.write("    arch_fpop_end(env);\n")
 
         ## Save/return the return variable
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 gen_helper_return_opn(f, regtype, regid, i)
         f.write("}\n\n")
diff --git a/target/hexagon/gen_helper_protos.py b/target/hexagon/gen_helper_protos.py
index 3dedd76cb4..131043795a 100755
--- a/target/hexagon/gen_helper_protos.py
+++ b/target/hexagon/gen_helper_protos.py
@@ -46,13 +46,13 @@
 }
 
 
-def gen_def_helper_opn(f, tag, regtype, regid, toss, numregs, i):
+def gen_def_helper_opn(f, tag, regtype, regid, i):
     if hex_common.is_pair(regid):
         f.write(f", {def_helper_types_pair[regtype]}")
     elif hex_common.is_single(regid):
         f.write(f", {def_helper_types[regtype]}")
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 ##
@@ -68,7 +68,7 @@ def gen_helper_prototype(f, tag, tagregs, tagimms):
     numresults = 0
     numscalarresults = 0
     numscalarreadwrite = 0
-    for regtype, regid, toss, numregs in regs:
+    for regtype, regid in regs:
         if hex_common.is_written(regid):
             numresults += 1
             if hex_common.is_scalar_reg(regtype):
@@ -124,10 +124,10 @@ def gen_helper_prototype(f, tag, tagregs, tagimms):
         ## - Emit the scalar result
         ## - Emit the vector result
         i = 0
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 if not hex_common.is_hvx_reg(regtype):
-                    gen_def_helper_opn(f, tag, regtype, regid, toss, numregs, i)
+                    gen_def_helper_opn(f, tag, regtype, regid, i)
                 i += 1
 
         ## Put the env between the outputs and inputs
@@ -135,27 +135,27 @@ def gen_helper_prototype(f, tag, tagregs, tagimms):
         i += 1
 
         # Second pass
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 if hex_common.is_hvx_reg(regtype):
-                    gen_def_helper_opn(f, tag, regtype, regid, toss, numregs, i)
+                    gen_def_helper_opn(f, tag, regtype, regid, i)
                     i += 1
 
         ## For conditional instructions, we pass in the destination register
         if "A_CONDEXEC" in hex_common.attribdict[tag]:
-            for regtype, regid, toss, numregs in regs:
+            for regtype, regid in regs:
                 if hex_common.is_writeonly(regid) and not hex_common.is_hvx_reg(
                     regtype
                 ):
-                    gen_def_helper_opn(f, tag, regtype, regid, toss, numregs, i)
+                    gen_def_helper_opn(f, tag, regtype, regid, i)
                     i += 1
 
         ## Generate the qemu type for each input operand (regs and immediates)
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_read(regid):
                 if hex_common.is_hvx_reg(regtype) and hex_common.is_readwrite(regid):
                     continue
-                gen_def_helper_opn(f, tag, regtype, regid, toss, numregs, i)
+                gen_def_helper_opn(f, tag, regtype, regid, i)
                 i += 1
         for immlett, bits, immshift in imms:
             f.write(", s32")
diff --git a/target/hexagon/gen_idef_parser_funcs.py b/target/hexagon/gen_idef_parser_funcs.py
index 29160fcb1d..f4518e653f 100644
--- a/target/hexagon/gen_idef_parser_funcs.py
+++ b/target/hexagon/gen_idef_parser_funcs.py
@@ -131,7 +131,7 @@ def main():
             imms = tagimms[tag]
 
             arguments = []
-            for regtype, regid, toss, numregs in regs:
+            for regtype, regid in regs:
                 prefix = "in " if hex_common.is_read(regid) else ""
 
                 is_pair = hex_common.is_pair(regid)
@@ -147,7 +147,7 @@ def main():
                 elif is_single_new:
                     arguments.append(f"{prefix}{regtype}{regid}N")
                 else:
-                    hex_common.bad_register(regtype, regid, toss, numregs)
+                    hex_common.bad_register(regtype, regid)
 
             for immlett, bits, immshift in imms:
                 arguments.append(hex_common.imm_name(immlett))
diff --git a/target/hexagon/gen_op_regs.py b/target/hexagon/gen_op_regs.py
index 42972c7f9e..a8a7712129 100755
--- a/target/hexagon/gen_op_regs.py
+++ b/target/hexagon/gen_op_regs.py
@@ -70,7 +70,7 @@ def strip_reg_prefix(x):
 def main():
     hex_common.read_semantics_file(sys.argv[1])
     hex_common.read_attribs_file(sys.argv[2])
-    tagregs = hex_common.get_tagregs()
+    tagregs = hex_common.get_tagregs(full=True)
     tagimms = hex_common.get_tagimms()
 
     with open(sys.argv[3], "w") as f:
@@ -79,7 +79,7 @@ def main():
             rregs = []
             wregs = []
             regids = ""
-            for regtype, regid, toss, numregs in regs:
+            for regtype, regid, _, numregs in regs:
                 if hex_common.is_read(regid):
                     if regid[0] not in regids:
                         regids += regid[0]
diff --git a/target/hexagon/gen_tcg_funcs.py b/target/hexagon/gen_tcg_funcs.py
index c73467b840..fe29d83d4d 100755
--- a/target/hexagon/gen_tcg_funcs.py
+++ b/target/hexagon/gen_tcg_funcs.py
@@ -223,7 +223,7 @@ def genptr_decl_new(f, tag, regtype, regid, regno):
         hex_common.bad_register(regtype, regid)
 
 
-def genptr_decl_opn(f, tag, regtype, regid, toss, numregs, i):
+def genptr_decl_opn(f, tag, regtype, regid, i):
     if hex_common.is_pair(regid):
         genptr_decl(f, tag, regtype, regid, i)
     elif hex_common.is_single(regid):
@@ -232,9 +232,9 @@ def genptr_decl_opn(f, tag, regtype, regid, toss, numregs, i):
         elif hex_common.is_new_val(regtype, regid, tag):
             genptr_decl_new(f, tag, regtype, regid, i)
         else:
-            hex_common.bad_register(regtype, regid, toss, numregs)
+            hex_common.bad_register(regtype, regid)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 def genptr_decl_imm(f, immlett):
@@ -354,12 +354,12 @@ def genptr_src_read_opn(f, regtype, regid, tag):
         elif hex_common.is_new_val(regtype, regid, tag):
             genptr_src_read_new(f, regtype, regid)
         else:
-            hex_common.bad_register(regtype, regid, toss, numregs)
+            hex_common.bad_register(regtype, regid)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
-def gen_helper_call_opn(f, tag, regtype, regid, toss, numregs, i):
+def gen_helper_call_opn(f, tag, regtype, regid, i):
     if i > 0:
         f.write(", ")
     if hex_common.is_pair(regid):
@@ -370,9 +370,9 @@ def gen_helper_call_opn(f, tag, regtype, regid, toss, numregs, i):
         elif hex_common.is_new_val(regtype, regid, tag):
             f.write(f"{regtype}{regid}N")
         else:
-            hex_common.bad_register(regtype, regid, toss, numregs)
+            hex_common.bad_register(regtype, regid)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 def gen_helper_decl_imm(f, immlett):
@@ -468,7 +468,7 @@ def genptr_dst_write_opn(f, regtype, regid, tag):
         else:
             genptr_dst_write(f, tag, regtype, regid)
     else:
-        hex_common.bad_register(regtype, regid, toss, numregs)
+        hex_common.bad_register(regtype, regid)
 
 
 ##
@@ -502,8 +502,8 @@ def gen_tcg_func(f, tag, regs, imms):
         gen_decl_ea_tcg(f, tag)
     i = 0
     ## Declare all the operands (regs and immediates)
-    for regtype, regid, toss, numregs in regs:
-        genptr_decl_opn(f, tag, regtype, regid, toss, numregs, i)
+    for regtype, regid in regs:
+        genptr_decl_opn(f, tag, regtype, regid, i)
         i += 1
     for immlett, bits, immshift in imms:
         genptr_decl_imm(f, immlett)
@@ -514,14 +514,14 @@ def gen_tcg_func(f, tag, regs, imms):
         f.write("    fCHECKFORGUEST();\n")
 
     ## Read all the inputs
-    for regtype, regid, toss, numregs in regs:
+    for regtype, regid in regs:
         if hex_common.is_read(regid):
             genptr_src_read_opn(f, regtype, regid, tag)
 
     if hex_common.is_idef_parser_enabled(tag):
         declared = []
         ## Handle registers
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_pair(regid) or (
                 hex_common.is_single(regid)
                 and hex_common.is_old_val(regtype, regid, tag)
@@ -532,7 +532,7 @@ def gen_tcg_func(f, tag, regs, imms):
             elif hex_common.is_new_val(regtype, regid, tag):
                 declared.append(f"{regtype}{regid}N")
             else:
-                hex_common.bad_register(regtype, regid, toss, numregs)
+                hex_common.bad_register(regtype, regid)
 
         ## Handle immediates
         for immlett, bits, immshift in imms:
@@ -564,11 +564,11 @@ def gen_tcg_func(f, tag, regs, imms):
         f.write(f"    gen_helper_{tag}(")
         i = 0
         ## If there is a scalar result, it is the return type
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 if hex_common.is_hvx_reg(regtype):
                     continue
-                gen_helper_call_opn(f, tag, regtype, regid, toss, numregs, i)
+                gen_helper_call_opn(f, tag, regtype, regid, i)
                 i += 1
         if i > 0:
             f.write(", ")
@@ -576,23 +576,23 @@ def gen_tcg_func(f, tag, regs, imms):
         i = 1
         ## For conditional instructions, we pass in the destination register
         if "A_CONDEXEC" in hex_common.attribdict[tag]:
-            for regtype, regid, toss, numregs in regs:
+            for regtype, regid in regs:
                 if hex_common.is_writeonly(regid) and not hex_common.is_hvx_reg(
                     regtype
                 ):
-                    gen_helper_call_opn(f, tag, regtype, regid, toss, numregs, i)
+                    gen_helper_call_opn(f, tag, regtype, regid, i)
                     i += 1
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_written(regid):
                 if not hex_common.is_hvx_reg(regtype):
                     continue
-                gen_helper_call_opn(f, tag, regtype, regid, toss, numregs, i)
+                gen_helper_call_opn(f, tag, regtype, regid, i)
                 i += 1
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if hex_common.is_read(regid):
                 if hex_common.is_hvx_reg(regtype) and hex_common.is_readwrite(regid):
                     continue
-                gen_helper_call_opn(f, tag, regtype, regid, toss, numregs, i)
+                gen_helper_call_opn(f, tag, regtype, regid, i)
                 i += 1
         for immlett, bits, immshift in imms:
             gen_helper_call_imm(f, immlett)
@@ -612,7 +612,7 @@ def gen_tcg_func(f, tag, regs, imms):
         f.write(");\n")
 
     ## Write all the outputs
-    for regtype, regid, toss, numregs in regs:
+    for regtype, regid in regs:
         if hex_common.is_written(regid):
             genptr_dst_write_opn(f, regtype, regid, tag)
 
diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py
index f3aac55db0..dce1b852a7 100755
--- a/target/hexagon/hex_common.py
+++ b/target/hexagon/hex_common.py
@@ -30,9 +30,8 @@
 overrides = {}  # tags with helper overrides
 idef_parser_enabled = {}  # tags enabled for idef-parser
 
-def bad_register(*args):
-    args_str = ", ".join(map(str, args))
-    raise Exception(f"Bad register parse: {args_str}")
+def bad_register(regtype, regid):
+    raise Exception(f"Bad register parse: regtype '{regtype}' regid '{regid}'")
 
 # We should do this as a hash for performance,
 # but to keep order let's keep it as a list.
@@ -124,7 +123,7 @@ def calculate_attribs():
     tagregs = get_tagregs()
     for tag in tags:
         regs = tagregs[tag]
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if regtype == "P" and is_written(regid):
                 attribdict[tag].add("A_WRITES_PRED_REG")
     # Mark conditional jumps and calls
@@ -170,10 +169,11 @@ def MACROATTRIB(macname, beh, attribstring):
         attribs = []
     macros[macname] = Macro(macname, beh, attribs)
 
-
-def compute_tag_regs(tag):
-    return uniquify(regre.findall(behdict[tag]))
-
+def compute_tag_regs(tag, full):
+    tagregs = regre.findall(behdict[tag])
+    if not full:
+        tagregs = map(lambda reg: reg[:2], tagregs)
+    return uniquify(tagregs)
 
 def compute_tag_immediates(tag):
     return uniquify(immre.findall(behdict[tag]))
@@ -200,9 +200,9 @@ def compute_tag_immediates(tag):
 ##          x, y             read-write register
 ##          xx, yy           read-write register pair
 ##
-def get_tagregs():
-    return dict(zip(tags, list(map(compute_tag_regs, tags))))
-
+def get_tagregs(full=False):
+    compute_func = lambda tag: compute_tag_regs(tag, full)
+    return dict(zip(tags, list(map(compute_func, tags))))
 
 def get_tagimms():
     return dict(zip(tags, list(map(compute_tag_immediates, tags))))
@@ -285,7 +285,7 @@ def need_pkt_need_commit(tag):
 
 def need_condexec_reg(tag, regs):
     if "A_CONDEXEC" in attribdict[tag]:
-        for regtype, regid, toss, numregs in regs:
+        for regtype, regid in regs:
             if is_writeonly(regid) and not is_hvx_reg(regtype):
                 return True
     return False
-- 
2.37.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments
  2023-05-24 14:41 [PATCH v2 0/2] Hexagon: minor cleanups to comments and python scripts Matheus Tavares Bernardino
  2023-05-24 14:41 ` [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and 'numregs' vars Matheus Tavares Bernardino
@ 2023-05-24 14:41 ` Matheus Tavares Bernardino
  2023-05-24 16:43   ` Taylor Simpson
  1 sibling, 1 reply; 5+ messages in thread
From: Matheus Tavares Bernardino @ 2023-05-24 14:41 UTC (permalink / raw)
  To: qemu-devel; +Cc: tsimpson, bcain, quic_mliebel

Some code comments refer to hex_new_value and hex_new_pred_value, which
have been transferred to DisasContext and, in the case of hex_new_value,
should now be accessed through get_result_gpr().

In order to fix this outdated comments and also avoid having to tweak
them whenever we make a variable name change in the future, let's
replace them with pseudocode.

Suggested-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
---
 target/hexagon/genptr.c    | 26 ++++++++++++--------------
 target/hexagon/translate.c |  2 +-
 2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c
index cb2aa28a19..bcb287dd8b 100644
--- a/target/hexagon/genptr.c
+++ b/target/hexagon/genptr.c
@@ -878,9 +878,9 @@ static void gen_endloop0(DisasContext *ctx)
      */
     if (!ctx->is_tight_loop) {
         /*
-         *    if (hex_gpr[HEX_REG_LC0] > 1) {
-         *        PC = hex_gpr[HEX_REG_SA0];
-         *        hex_new_value[HEX_REG_LC0] = hex_gpr[HEX_REG_LC0] - 1;
+         *    if (LC0 > 1) {
+         *        PC = SA0;
+         *        LC0--;
          *    }
          */
         TCGLabel *label3 = gen_new_label();
@@ -897,9 +897,9 @@ static void gen_endloop0(DisasContext *ctx)
 static void gen_endloop1(DisasContext *ctx)
 {
     /*
-     *    if (hex_gpr[HEX_REG_LC1] > 1) {
-     *        PC = hex_gpr[HEX_REG_SA1];
-     *        hex_new_value[HEX_REG_LC1] = hex_gpr[HEX_REG_LC1] - 1;
+     *    if (LC1 > 1) {
+     *        PC = SA1;
+     *        LC1--;
      *    }
      */
     TCGLabel *label = gen_new_label();
@@ -946,14 +946,12 @@ static void gen_endloop01(DisasContext *ctx)
     gen_set_label(label2);
 
     /*
-     *    if (hex_gpr[HEX_REG_LC0] > 1) {
-     *        PC = hex_gpr[HEX_REG_SA0];
-     *        hex_new_value[HEX_REG_LC0] = hex_gpr[HEX_REG_LC0] - 1;
-     *    } else {
-     *        if (hex_gpr[HEX_REG_LC1] > 1) {
-     *            hex_next_pc = hex_gpr[HEX_REG_SA1];
-     *            hex_new_value[HEX_REG_LC1] = hex_gpr[HEX_REG_LC1] - 1;
-     *        }
+     *    if (LC0 > 1) {
+     *        PC = SA0;
+     *        LC0--;
+     *    } else if (LC1 > 1) {
+     *        PC = SA1;
+     *        LC1--;
      *    }
      */
     tcg_gen_brcondi_tl(TCG_COND_LEU, hex_gpr[HEX_REG_LC0], 1, label3);
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
index b18f1a9051..8838ab2364 100644
--- a/target/hexagon/translate.c
+++ b/target/hexagon/translate.c
@@ -556,7 +556,7 @@ static void gen_start_packet(DisasContext *ctx)
     }
 
     /*
-     * Preload the predicated pred registers into hex_new_pred_value[pred_num]
+     * Preload the predicated pred registers into ctx->new_pred_value[pred_num]
      * Only endloop instructions conditionally write to pred registers
      */
     if (ctx->need_commit && pkt->pkt_has_endloop) {
-- 
2.37.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* RE: [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and 'numregs' vars
  2023-05-24 14:41 ` [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and 'numregs' vars Matheus Tavares Bernardino
@ 2023-05-24 16:42   ` Taylor Simpson
  0 siblings, 0 replies; 5+ messages in thread
From: Taylor Simpson @ 2023-05-24 16:42 UTC (permalink / raw)
  To: Matheus Bernardino (QUIC), qemu-devel
  Cc: Brian Cain, Marco Liebel (QUIC), Alessandro Di Federico, Anton Johansson



> -----Original Message-----
> From: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> Sent: Wednesday, May 24, 2023 9:42 AM
> To: qemu-devel@nongnu.org
> Cc: Taylor Simpson <tsimpson@quicinc.com>; Brian Cain
> <bcain@quicinc.com>; Marco Liebel (QUIC) <quic_mliebel@quicinc.com>;
> Alessandro Di Federico <ale@rev.ng>; Anton Johansson <anjo@rev.ng>
> Subject: [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and
> 'numregs' vars
> 
> Many Hexagon python scripts call hex_common.get_tagregs(), but only one
> call site use the full reg structure given by this function. To make the code
> cleaner, let's make get_tagregs() filter out the unused fields (i.e. 'toss' and
> 'numregs'), properly removed the unused variables at the call sites. The
> hex_common.bad_register() function is also adjusted to work exclusively with
> 'regtype' and 'regid' args. For the single call site that does use toss/numregs,
> we provide an optional parameter to
> get_tagregs() which will restore the old full behavior.
> 
> Suggested-by: Taylor Simpson <tsimpson@quicinc.com>
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
>  target/hexagon/gen_analyze_funcs.py     | 10 +++---
>  target/hexagon/gen_helper_funcs.py      | 30 ++++++++--------
>  target/hexagon/gen_helper_protos.py     | 22 ++++++------
>  target/hexagon/gen_idef_parser_funcs.py |  4 +--
>  target/hexagon/gen_op_regs.py           |  4 +--
>  target/hexagon/gen_tcg_funcs.py         | 46 ++++++++++++-------------
>  target/hexagon/hex_common.py            | 24 ++++++-------
>  7 files changed, 70 insertions(+), 70 deletions(-)

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Tested-by: Taylor Simpson <tsimpson@quicinc.com>

Queued to hex.next




^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments
  2023-05-24 14:41 ` [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments Matheus Tavares Bernardino
@ 2023-05-24 16:43   ` Taylor Simpson
  0 siblings, 0 replies; 5+ messages in thread
From: Taylor Simpson @ 2023-05-24 16:43 UTC (permalink / raw)
  To: Matheus Bernardino (QUIC), qemu-devel; +Cc: Brian Cain, Marco Liebel (QUIC)



> -----Original Message-----
> From: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> Sent: Wednesday, May 24, 2023 9:42 AM
> To: qemu-devel@nongnu.org
> Cc: Taylor Simpson <tsimpson@quicinc.com>; Brian Cain
> <bcain@quicinc.com>; Marco Liebel (QUIC) <quic_mliebel@quicinc.com>
> Subject: [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments
> 
> Some code comments refer to hex_new_value and hex_new_pred_value,
> which have been transferred to DisasContext and, in the case of
> hex_new_value, should now be accessed through get_result_gpr().
> 
> In order to fix this outdated comments and also avoid having to tweak them
> whenever we make a variable name change in the future, let's replace them
> with pseudocode.
> 
> Suggested-by: Taylor Simpson <tsimpson@quicinc.com>
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
>  target/hexagon/genptr.c    | 26 ++++++++++++--------------
>  target/hexagon/translate.c |  2 +-
>  2 files changed, 13 insertions(+), 15 deletions(-)

Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>

Queued to hex.next


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-05-24 16:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-24 14:41 [PATCH v2 0/2] Hexagon: minor cleanups to comments and python scripts Matheus Tavares Bernardino
2023-05-24 14:41 ` [PATCH v2 1/2] target/hexagon/*.py: clean up used 'toss' and 'numregs' vars Matheus Tavares Bernardino
2023-05-24 16:42   ` Taylor Simpson
2023-05-24 14:41 ` [PATCH v2 2/2] Hexagon: fix outdated `hex_new_*` comments Matheus Tavares Bernardino
2023-05-24 16:43   ` Taylor Simpson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.