Skip to content
Snippets Groups Projects

Eliminate branches: implement isl analysis and recurse into conditionals

Merged Daniel Bauer requested to merge hyteg/pystencils:bauerd/isl into backend-rework
2 files
+ 8
3
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -67,9 +67,9 @@ class EliminateBranches:
@@ -67,9 +67,9 @@ class EliminateBranches:
statements_new: list[PsAstNode] = []
statements_new: list[PsAstNode] = []
for stmt in statements:
for stmt in statements:
if isinstance(stmt, PsConditional):
if isinstance(stmt, PsConditional):
result = self.visit(stmt, ec)
simplified = self.visit(stmt, ec)
if not result.structurally_equal(PsBlock([])):
if not simplified.structurally_equal(PsBlock([])):
statements_new.append(result)
statements_new.append(simplified)
else:
else:
statements_new.append(self.visit(stmt, ec))
statements_new.append(self.visit(stmt, ec))
node.statements = statements_new
node.statements = statements_new
@@ -213,6 +213,8 @@ class EliminateBranches:
@@ -213,6 +213,8 @@ class EliminateBranches:
return PsExpression.make(PsConstant(False))
return PsExpression.make(PsConstant(False))
elif intersection == outer_set:
elif intersection == outer_set:
return PsExpression.make(PsConstant(True))
return PsExpression.make(PsConstant(True))
 
else:
 
return condition
except ImportError:
except ImportError:
return condition
return condition
Loading