[InstSimplify] add folds for or-of-casted-icmps
authorSanjay Patel <spatel@rotateright.com>
Thu, 4 May 2017 19:51:34 +0000 (19:51 +0000)
committerSanjay Patel <spatel@rotateright.com>
Thu, 4 May 2017 19:51:34 +0000 (19:51 +0000)
commite42b4d566e97dc852f76532529e1318e041ab3ab
treec27969429322aecd36d9d4e0be181555945c1103
parentf1deb837eee39ec6ddbe177be9de129f4fd59ee1
[InstSimplify] add folds for or-of-casted-icmps

The sibling folds for 'and' with casts were added with https://reviews.llvm.org/rL273200.
This is a preliminary step for adding the 'or' variants for the folds added with https://reviews.llvm.org/rL301260.

The reason for the strange form with constant LHS in the 1st test is because there's another missing fold in that
case for the inverted predicate. That should be fixed when we add the ConstantRange functionality for 'or-of-icmps'
that already exists for 'and-of-icmps'.

I'm hoping to share more code for the and/or cases, so we won't have these differences. This will allow us to remove
code from InstCombine. It's also possible that we can remove some code here in InstSimplify. I think we have some
duplicated folds because patterns are not matched in a general way.

Differential Revision: https://reviews.llvm.org/D32876

llvm-svn: 302189
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/test/Transforms/InstSimplify/AndOrXor.ll