From 27e899aea52335d6424ed08cb8dc73c857fc27e6 Mon Sep 17 00:00:00 2001 From: Sieds Lykles <93992551+S-Lykles@users.noreply.github.com> Date: Mon, 3 Mar 2025 09:09:27 +0100 Subject: [PATCH] Make const moving not depend on the order (#9245) Since floats are not being flipped anymore this should help with const folding for floats --- tinygrad/codegen/symbolic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tinygrad/codegen/symbolic.py b/tinygrad/codegen/symbolic.py index 9cd5ca7623..dec7be249b 100644 --- a/tinygrad/codegen/symbolic.py +++ b/tinygrad/codegen/symbolic.py @@ -213,8 +213,8 @@ symbolic = symbolic_simple+PatternMatcher([ ((UPat.var("x", dtype=dtypes.ints)//UPat.cvar("c0", vec=False)) 0 else None), # ** move add/mul consts to end (NOTE: this is still happening before constant folding) ** - (UPat(Ops.ADD, src=(UPat.var("x"), UPat.cvar("c1"))) + UPat.var("y"), lambda x,c1,y: (x+y)+c1), - (UPat(Ops.MUL, src=(UPat.var("x"), UPat.cvar("c1"))) * UPat.var("y"), lambda x,c1,y: (x*y)*c1), + ((UPat.var("x") + UPat.cvar("c1")) + UPat.var("y"), lambda x,c1,y: (x+y)+c1), + ((UPat.var("x") * UPat.cvar("c1")) * UPat.var("y"), lambda x,c1,y: (x*y)*c1), # *** rules from symbolic *** # unrolled arange div folding (UPat(Ops.ADD, name="divs", src=[UPat(), UPat(Ops.IDIV)]), fold_unrolled_divs),