[#663] Optimize PAIRN, DROPN and UNPAIRN
Description
Problem: Optimizer can't handle instructions working with variable number of arguments, and duplicating all rules for PAIR, DROP, UNPAIR for variable number of arguments is infeasible.
Solution: Expand PAIRN, DROPN and UNPAIRN into sequences of PAIR, DROP and UNPAIR respectively in the first optimization pass. Then merge what's left of those back.
Related issue(s)
Resolves #663 (closed) (unless I'm missing other instructions that could benefit from this treatment)
✅ Checklist for your Merge Request
Related changes (conditional)
-
Tests (see short guidelines)
-
If I added new functionality, I added tests covering it. -
If I fixed a bug, I added a regression test to prevent the bug from silently reappearing again.
-
-
Documentation
Stylistic guide (mandatory)
-
My commits comply with the following policy. -
My code complies with the style guide.