Alive2 links for "A & (~A | B) --> A & B":
https://alive2.llvm.org/ce/z/oKiodu (scalar)
https://alive2.llvm.org/ce/z/8yn8GL (vector)
Alive2 links for "A | (~A & B) --> A | B"
https://alive2.llvm.org/ce/z/v5GEKu (scalar)
https://alive2.llvm.org/ce/z/wvtJsj (vector)
This isn't doing what we wanted - the not will get commuted to operand 0.
To keep it as operand 1, we need something like this:
We also need matching and tests for patterns where the "or-not" is the condition value of the select?