opt_expr: Add more $alu optimizations.
authorMarcelina Kościelnicka <mwk@0x04.net>
Mon, 13 Apr 2020 17:29:39 +0000 (19:29 +0200)
committerMarcelina Kościelnicka <mwk@0x04.net>
Tue, 14 Apr 2020 19:48:13 +0000 (21:48 +0200)
commit6c16fd760b611441aaa8a9dd9ee1714c7750127a
tree5dc154f751502dd1813dea9c2ce4298e667f3dc1
parent7a36728b2fd640e166188b05c901b1992ec2af6b
opt_expr: Add more $alu optimizations.

Detect the places in the $alu where the carry bit is constant (due to
const A[i] == B[i] ^ BI) and split it into smaller $alu at these points.

Also, make the existing const-carry detection for low bits more generic
(now handles cases where both BI and CI are constant, but not equal to
one another).

Fixes #1912.
passes/opt/opt_expr.cc
tests/opt/opt_expr_alu.ys