[InstCombine] Fold Select with AND/OR condition
authorDavid Bolvansky <david.bolvansky@gmail.com>
Sat, 28 Jul 2018 06:55:51 +0000 (06:55 +0000)
committerDavid Bolvansky <david.bolvansky@gmail.com>
Sat, 28 Jul 2018 06:55:51 +0000 (06:55 +0000)
commitf947608ddfe026eaf013524e5fe09d3c425a5cf0
tree2428922e8296e8b4712338c7032ac57b48afdc5a
parent256db4b799a7c6e01d5210099f403b1bf124e2ba
[InstCombine] Fold Select with AND/OR condition

Summary:
Fold
```
%A = icmp ne i8 %X, %V1
%B = icmp ne i8 %X, %V2
%C = or i1 %A, %B
%D = select i1 %C, i8 %X, i8 %V1
ret i8 %D
  =>
ret i8 %X

Fixes https://bugs.llvm.org/show_bug.cgi?id=38334
Proof: https://rise4fun.com/Alive/plI8

Reviewers: spatel, lebedev.ri

Reviewed By: lebedev.ri

Subscribers: craig.topper, llvm-commits

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

llvm-svn: 338191
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/test/Transforms/InstCombine/select-and-cmp.ll
llvm/test/Transforms/InstCombine/select-or-cmp.ll