[PATCH] Added InstCombine transform for pattern "(A & B) ^ (A ^ B) -> (A | B)"
chisophugis at gmail.com
Tue Jul 22 10:40:45 PDT 2014
In the future, if it's not too much trouble, could you please include a link like http://rise4fun.com/Z3/Evslo along with any identities just to verify that no errors are slipping through? It's an easy way to save the reviewer some head scratching and increase confidence in correctness.
Z3 is pretty easy to use and has a good tutorial http://rise4fun.com/Z3/tutorial/guide . You don't need to read all of it, just skip to the "bit vectors" section for the list of operations and just reuse the boilerplate in my link. Basically, if your identity is "foo == bar", then what you ask Z3 to do is check that the statement "foo != bar" is unsatisfiable. The online Z3 "permalink" feature is what gives you a URL like the above.
(The lisp syntax is kind of annoying, but it's workable; they used to have a Python version that was more syntactically convenient, but I can't seem to find it)
More information about the llvm-commits