All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [Intel-gfx] [PATCH i-g-t v2 1/3] lib/i915/perf: remove generation code for mathml render
Date: Thu, 12 Mar 2020 13:15:40 +0200	[thread overview]
Message-ID: <20200312111542.2418545-1-lionel.g.landwerlin@intel.com> (raw)

Gputop had support for generating mathml figures of the post
processing equations. It's not useful here.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
---
 lib/i915/perf-configs/perf-codegen.py | 168 +++-----------------------
 1 file changed, 17 insertions(+), 151 deletions(-)

diff --git a/lib/i915/perf-configs/perf-codegen.py b/lib/i915/perf-configs/perf-codegen.py
index 24c5514d..ac3ad683 100755
--- a/lib/i915/perf-configs/perf-codegen.py
+++ b/lib/i915/perf-configs/perf-codegen.py
@@ -36,109 +36,6 @@ c = None
 hashed_funcs = {}
 xml_equations = None
 
-def check_operand_type(set, arg):
-    if arg.isdigit():
-        return "\n<mn>" + arg + "</mn>"
-    elif arg[0] == "$":
-        if arg in set.counter_vars:
-            description = set.counter_vars[arg].get('description')
-        elif arg in hw_vars and 'desc' in hw_vars[arg]:
-            description = hw_vars[arg]['desc'];
-        else:
-            description = None
-
-        if description != None:
-            return "\n<maction actiontype='tooltip'>\n<mi>" + arg + "</mi>\n<mtext>" + description + "</mtext>\n</maction>"
-        else:
-            return "<mi>" + arg + "</mi>"
-    return arg
-
-# http://en.cppreference.com/w/c/language/operator_precedence
-and_precedence = 8
-shft_precedence = 5
-mul_precedence = 3
-add_precedence = 2
-sub_precedence = 2
-default_precedence = 16 #a high value which denotes no brackets needed
-
-def put_brackets(arg):
-    return "\n<mtext>(</mtext>" + arg + "\n<mtext>)</mtext>"
-
-def mathml_splice_add(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    if args[0][1] < add_precedence:
-        operand_0 = put_brackets(args[0][0])
-    if args[1][1] < add_precedence:
-        operand_1 = put_brackets(args[1][0])
-    return [operand_1 + "\n<mo>+</mo>" + operand_0, add_precedence]
-
-def mathml_splice_div(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    return ["\n<mfrac>\n<mrow>" + operand_1 + "\n</mrow>\n<mrow>" + operand_0 + "</mrow>\n</mfrac>", default_precedence]
-
-def mathml_splice_max(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    return ["\n<mtext>max ( </mtext>" + operand_1 + "\n<mtext> , </mtext>" + operand_0 + "\n<mtext> ) </mtext>", default_precedence]
-
-def mathml_splice_mul(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    if args[0][1] < mul_precedence:
-        operand_0 = put_brackets(args[0][0])
-    if args[1][1] < mul_precedence:
-        operand_1 = put_brackets(args[1][0])
-    return [operand_1 + "\n<mo>*</mo>" + operand_0, mul_precedence]
-
-def mathml_splice_sub(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    if args[0][1] < sub_precedence:
-        operand_0 = put_brackets(args[0][0])
-    if args[1][1] < sub_precedence:
-        operand_1 = put_brackets(args[1][0])
-    return [operand_1 + "\n<mo>-</mo>" + operand_0, sub_precedence]
-
-def mathml_splice_read(set, args):
-    return ["\n<maction actiontype='tooltip'>\n<mi>" + args[1][0] + args[0][0] + "</mi>\n<mtext>placeholder</mtext>\n</maction>", default_precedence]
-
-def mathml_splice_read_reg(set, args):
-    return ["\n<maction actiontype='tooltip'>\n<mi>" + args[0][0] + "</mi>\n<mtext>placeholder</mtext>\n</maction>", default_precedence]
-
-def mathml_splice_min(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    return ["\n<mtext>min ( </mtext>" + operand_1 + "\n<mtext> , </mtext>" + operand_0 + "\n<mtext> ) </mtext>", default_precedence]
-
-def mathml_splice_lshft(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    if args[0][1] < shft_precedence:
-        operand_0 = put_brackets(args[0][0])
-    if args[1][1] < shft_precedence:
-        operand_1 = put_brackets(args[1][0])
-    return [operand_1 + "\n<mo>&lt;&lt;</mo>" + operand_0, shft_precedence]
-
-def mathml_splice_rshft(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    if args[0][1] < mul_precedence:
-        operand_0 = put_brackets(args[0][0])
-    if args[1][1] < mul_precedence:
-        operand_1 = put_brackets(args[1][0])
-    return [operand_1 + "\n<mo>&gt;&gt;</mo>" + operand_0, mul_precedence]
-
-def mathml_splice_and(set, args):
-    operand_0 = check_operand_type(set, args[0][0])
-    operand_1 = check_operand_type(set, args[1][0])
-    if args[0][1] < and_precedence:
-        operand_0 = put_brackets(args[0][0])
-    if args[1][1] < and_precedence:
-        operand_1 = put_brackets(args[1][0])
-    return [operand_1 + "\n<mo>&amp;</mo>" + operand_0, and_precedence]
-
 def emit_fadd(tmp_id, args):
     c("double tmp{0} = {1} + {2};".format(tmp_id, args[1], args[0]))
     return tmp_id + 1
@@ -212,22 +109,22 @@ def emit_and(tmp_id, args):
     return tmp_id + 1
 
 ops = {}
-#                     (n operands, emitter1, emitter2)
-ops["FADD"]     = (2, emit_fadd, mathml_splice_add)
-ops["FDIV"]     = (2, emit_fdiv, mathml_splice_div)
-ops["FMAX"]     = (2, emit_fmax, mathml_splice_max)
-ops["FMUL"]     = (2, emit_fmul, mathml_splice_mul)
-ops["FSUB"]     = (2, emit_fsub, mathml_splice_sub)
-ops["READ"]     = (2, emit_read, mathml_splice_read)
-ops["READ_REG"] = (1, emit_read_reg, mathml_splice_read_reg)
-ops["UADD"]     = (2, emit_uadd, mathml_splice_add)
-ops["UDIV"]     = (2, emit_udiv, mathml_splice_div)
-ops["UMUL"]     = (2, emit_umul, mathml_splice_mul)
-ops["USUB"]     = (2, emit_usub, mathml_splice_sub)
-ops["UMIN"]     = (2, emit_umin, mathml_splice_min)
-ops["<<"]       = (2, emit_lshft, mathml_splice_lshft)
-ops[">>"]       = (2, emit_rshft, mathml_splice_rshft)
-ops["AND"]      = (2, emit_and, mathml_splice_and)
+#                     (n operands, emitter)
+ops["FADD"]     = (2, emit_fadd)
+ops["FDIV"]     = (2, emit_fdiv)
+ops["FMAX"]     = (2, emit_fmax)
+ops["FMUL"]     = (2, emit_fmul)
+ops["FSUB"]     = (2, emit_fsub)
+ops["READ"]     = (2, emit_read)
+ops["READ_REG"] = (1, emit_read_reg)
+ops["UADD"]     = (2, emit_uadd)
+ops["UDIV"]     = (2, emit_udiv)
+ops["UMUL"]     = (2, emit_umul)
+ops["USUB"]     = (2, emit_usub)
+ops["UMIN"]     = (2, emit_umin)
+ops["<<"]       = (2, emit_lshft)
+ops[">>"]       = (2, emit_rshft)
+ops["AND"]      = (2, emit_and)
 
 def brkt(subexp):
     if " " in subexp:
@@ -270,27 +167,6 @@ hw_vars = {
         "$QueryMode": { 'c': "perf->devinfo.query_mode" },
 }
 
-def splice_mathml_expression(set, equation, tag):
-    tokens = equation.split()
-    mathml_stack = []
-    tmp_xml_operand = ""
-    for token in tokens:
-        if not mathml_stack:
-            token = check_operand_type(set, token)
-        mathml_stack.append([token, default_precedence])
-        while mathml_stack and mathml_stack[-1][0] in ops:
-            op = mathml_stack.pop()[0]
-            argc, callback, mathml_callback = ops[op]
-            xml_args = []
-            for i in range(0, argc):
-                xml_operand = mathml_stack.pop()
-                xml_args.append(xml_operand)
-            tmp_xml_operand = mathml_callback(set, xml_args)
-            mathml_stack.append(tmp_xml_operand)
-    xml_string = mathml_stack.pop()[0]
-    equation_descr = "<mi>" + tag + "</mi><mo> = </mo>"
-    return "<mathml_" + tag + ">" + equation_descr + xml_string + "</mathml_" + tag + ">"
-
 def output_rpn_equation_code(set, counter, equation):
     c("/* RPN equation: " + equation + " */")
     tokens = equation.split()
@@ -302,7 +178,7 @@ def output_rpn_equation_code(set, counter, equation):
         stack.append(token)
         while stack and stack[-1] in ops:
             op = stack.pop()
-            argc, callback, mathml_callback = ops[op]
+            argc, callback = ops[op]
             args = []
             for i in range(0, argc):
                 operand = stack.pop()
@@ -656,7 +532,6 @@ def main():
     parser = argparse.ArgumentParser()
     parser.add_argument("--header", help="Header file to write")
     parser.add_argument("--code", help="C file to write")
-    parser.add_argument("--xml-out", help="Output XML files (adding mathml equations)")
     parser.add_argument("xml_files", nargs='+', help="List of xml metrics files to process")
 
     args = parser.parse_args()
@@ -669,15 +544,6 @@ def main():
     for xml_file in args.xml_files:
         gens.append(Gen(xml_file))
 
-    if args.xml_out:
-        for gen in gens:
-            for set in gen.sets:
-                for counter in set.counters:
-                    xml_equation = splice_mathml_expression(set, counter.get('equation'), "EQ")
-                    counter.append(et.fromstring(xml_equation))
-            gen.xml.write(gen.filename)
-
-
     copyright = textwrap.dedent("""\
         /* Autogenerated file, DO NOT EDIT manually! generated by {}
          *
-- 
2.25.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

             reply	other threads:[~2020-03-12 11:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-12 11:15 Lionel Landwerlin [this message]
2020-03-12 11:15 ` [Intel-gfx] [PATCH i-g-t v2 2/3] lib/i915/perf: break generated code in separate files Lionel Landwerlin
2020-03-12 11:15 ` [Intel-gfx] [PATCH i-g-t v2 3/3] lib/i915/perf: update TGL configs Lionel Landwerlin
2020-03-12 11:43 ` [Intel-gfx] ✗ GitLab.Pipeline: warning for series starting with [v2,1/3] lib/i915/perf: remove generation code for mathml render Patchwork
2020-03-12 12:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-03-13  5:30 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200312111542.2418545-1-lionel.g.landwerlin@intel.com \
    --to=lionel.g.landwerlin@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.