From 7e5adbd1065a49c152499c0389f6a395ff6b7e6d Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 9 Jun 2016 19:27:40 -0500
Subject: [PATCH] Add simplify_using_affs

---
 loopy/symbolic.py | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/loopy/symbolic.py b/loopy/symbolic.py
index cef32851f..d800a043b 100644
--- a/loopy/symbolic.py
+++ b/loopy/symbolic.py
@@ -1083,6 +1083,29 @@ def aff_from_expr(space, expr, vars_to_zero=set()):
 # }}}
 
 
+# {{{ simplify using affs
+
+def simplify_using_affs(kernel, expr):
+    inames = get_dependencies(expr) & kernel.all_inames()
+
+    domain = kernel.get_inames_domain(inames)
+
+    try:
+        with isl.SuppressedWarnings(kernel.isl_context):
+            aff = aff_from_expr(domain.space, expr)
+    except isl.Error:
+        return expr
+    except TypeError:
+        return expr
+
+    # FIXME: Deal with assumptions, too.
+    aff = aff.gist(domain)
+
+    return aff_to_expr(aff)
+
+# }}}
+
+
 # {{{ expression <-> constraint conversion
 
 def eq_constraint_from_expr(space, expr):
-- 
GitLab