diff --git a/tinygrad/uop/ops.py b/tinygrad/uop/ops.py index d40aa99303..f4ee787358 100644 --- a/tinygrad/uop/ops.py +++ b/tinygrad/uop/ops.py @@ -988,8 +988,8 @@ def graph_rewrite(sink:UOp, pm:PatternMatcher, ctx=None, bottom_up=False, name=N @track_matches def graph_rewrite_map(sink:UOp, pm:PatternMatcher, ctx=None, bottom_up=False, name=None, input_map:dict[UOp, UOp]|None=None) -> dict[UOp, UOp]: rewrite_ctx = RewriteContext(pm, ctx) - new_map = {k:(rewrite_ctx.bottom_up_rewrite(k) if bottom_up else rewrite_ctx.top_down_rewrite(k)) for k in list(sink.toposort())[::-1]} - all_metadata.update((v, k.metadata) for k,v in new_map.items() if k.metadata is not None) + new_map = {k:(rewrite_ctx.bottom_up_rewrite(k) if bottom_up else rewrite_ctx.top_down_rewrite(k)) for k in sink.toposort()} + all_metadata.update((v, k.metadata) for k,v in reversed(new_map.items()) if k.metadata is not None) if input_map is not None: for k,v in input_map.items(): new_map[k] = new_map.get(v,v) return new_map