⚪ Expression simplification.
simplify function performs the known transformations in a loop until
no further simplification is possible. The remaining functions are the
actual transformations performed.
⚪ Transform two nested concatenations with constant consecutive parts into one.
⚪ Transform two nested signed or unsigned extensions into one.
⚪ Transform two nested slices into one.
⚪ Transform concatenation of two adjacent slices into one slice.
⚪ Transform concatenation of an all-zero bit vectors with a value into unsigned extension of the value.
⚪ Reduce arithmetic and bitwise expressions to simpler equivalent ones.
⚪ Perform shallow constant folding.
⚪ Normalize commutative operators so that if there is a constant operand, it is the second one.
⚪ Remove a slice that encompasses the entire operand.
⚪ Simplify an expression.
⚪ Transform slice of concatenation that references just one part into slice of the part.