Module: Mesa Branch: main Commit: 8c73b1eb909cdf0c19503ca46f965a55ebb2dfed URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c73b1eb909cdf0c19503ca46f965a55ebb2dfed
Author: Karol Herbst <kher...@redhat.com> Date: Sun Dec 10 23:14:53 2023 +0100 nir/algebraic: add support for custom arguments Those are passed as an optional argument and are declared as a list of (type, name) tuples. At the moment this can only be used for conditions. Signed-off-by: Karol Herbst <kher...@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26214> --- src/compiler/nir/nir_algebraic.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/compiler/nir/nir_algebraic.py b/src/compiler/nir/nir_algebraic.py index 065810bb393..fe17f39740e 100644 --- a/src/compiler/nir/nir_algebraic.py +++ b/src/compiler/nir/nir_algebraic.py @@ -1168,8 +1168,12 @@ static const nir_algebraic_table ${pass_name}_table = { }; bool -${pass_name}(nir_shader *shader) -{ +${pass_name}( + nir_shader *shader +% for type, name in params: + , ${type} ${name} +% endfor +) { bool progress = false; bool condition_flags[${len(condition_list)}]; const nir_shader_compiler_options *options = shader->options; @@ -1192,12 +1196,14 @@ ${pass_name}(nir_shader *shader) class AlgebraicPass(object): - def __init__(self, pass_name, transforms): + # params is a list of `("type", "name")` tuples + def __init__(self, pass_name, transforms, params=[]): self.xforms = [] self.opcode_xforms = defaultdict(lambda : []) self.pass_name = pass_name self.expression_cond = {} self.variable_cond = {} + self.params = params error = False @@ -1263,7 +1269,8 @@ class AlgebraicPass(object): expression_cond = sorted(self.expression_cond.items(), key=lambda kv: kv[1]), variable_cond = sorted(self.variable_cond.items(), key=lambda kv: kv[1]), get_c_opcode=get_c_opcode, - itertools=itertools) + itertools=itertools, + params=self.params) # The replacement expression isn't necessarily exact if the search expression is exact. def ignore_exact(*expr):