Skip to content

Commit 2a8090d

Browse files
committed
New simplification rules.
1 parent 8926274 commit 2a8090d

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

libevmasm/RuleList.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,22 @@ std::vector<SimplificationRule<Pattern>> simplificationRuleListPart8(
681681
// X - (A + Y) -> (X - Y) + (-A)
682682
Builtins::SUB(X, Builtins::ADD(A, Y)),
683683
[=]() -> Pattern { return Builtins::ADD(Builtins::SUB(X, Y), 0 - A.d()); }
684+
}, {
685+
// (X - A) - Y -> (X - Y) - A
686+
Builtins::SUB(Builtins::SUB(X, A), Y),
687+
[=]() -> Pattern { return Builtins::SUB(Builtins::SUB(X, Y), A); }
688+
}, {
689+
// (A - X) - Y -> A - (X + Y)
690+
Builtins::SUB(Builtins::SUB(A, X), Y),
691+
[=]() -> Pattern { return Builtins::SUB(A, Builtins::ADD(X, Y)); }
692+
}, {
693+
// X - (Y - A) -> (X - Y) + A
694+
Builtins::SUB(X, Builtins::SUB(Y, A)),
695+
[=]() -> Pattern { return Builtins::ADD(Builtins::SUB(X, Y), A.d()); }
696+
}, {
697+
// X - (A - Y) -> (X + Y) + (-A)
698+
Builtins::SUB(X, Builtins::SUB(A, Y)),
699+
[=]() -> Pattern { return Builtins::ADD(Builtins::ADD(X, Y), 0 - A.d()); }
684700
}
685701
};
686702
return rules;

0 commit comments

Comments
 (0)