Sarek_execute.Ir_renameRenaming of a kernel's names, shared by the fusion rewrites (specs/launch-window.md, specs/epilogue-fusion.md).
Every variable, array and pattern name goes through name, every var id through id, and every argument-less Sarek_stdlib.Gpu intrinsic through position (which may replace it). Helper functions are called by their own names, which are left alone. Record fields and constructors are not names of the kernel and are left alone too.
type ctx = {name : string -> string;id : int -> int;position : string -> Sarek_ir_types.expr option;}val var : ctx -> Sarek_ir_types.var -> Sarek_ir_types.varval expr : ctx -> Sarek_ir_types.expr -> Sarek_ir_types.exprval pattern : ctx -> Sarek_ir_types.pattern -> Sarek_ir_types.patternval lvalue : ctx -> Sarek_ir_types.lvalue -> Sarek_ir_types.lvalueval stmt : ctx -> Sarek_ir_types.stmt -> Sarek_ir_types.stmtval decl : ctx -> Sarek_ir_types.decl -> Sarek_ir_types.declval max_id_expr : int -> Sarek_ir_types.expr -> intval max_id_lvalue : int -> Sarek_ir_types.lvalue -> intval max_id_stmt : int -> Sarek_ir_types.stmt -> intval max_var_id : Sarek_ir_types.kernel -> int