[InstCombine] Fold Select with binary op - FP opcodes
authorDavid Bolvansky <david.bolvansky@gmail.com>
Thu, 23 Aug 2018 15:22:15 +0000 (15:22 +0000)
committerDavid Bolvansky <david.bolvansky@gmail.com>
Thu, 23 Aug 2018 15:22:15 +0000 (15:22 +0000)
commit43b0e2584706c5c0efc86ea099ba8b54bb64743f
tree65f01c77cd68ca4fff904f626ee1fb22c94e08fe
parent3ecabd709f7d7031df9368d27d0b300460d51cf1
[InstCombine] Fold Select with binary op - FP opcodes

Summary:
Follow up for https://reviews.llvm.org/rL339520 and https://reviews.llvm.org/rL338300

Alive:

```
%A = fcmp oeq float %x, 0.0
%B = fadd nsz float %x, %z
%C = select i1 %A, float %B, float %y
=>
%C = select i1 %A, float %z, float %y
----------
  %A = fcmp oeq float %x, 0.0
  %B = fadd nsz float %x, %z
  %C = select %A, float %B, float %y
=>
  %C = select %A, float %z, float %y

Done: 1
Optimization is correct

%A = fcmp une float %x, -0.0
%B = fadd nsz float %x, %z
%C = select i1 %A, float %y, float %B
=>
%C = select i1 %A, float %y, float %z
----------
  %A = fcmp une float %x, -0.0
  %B = fadd nsz float %x, %z
  %C = select %A, float %y, float %B
=>
  %C = select %A, float %y, float %z

Done: 1
Optimization is correct
```

Reviewers: spatel, lebedev.ri

Reviewed By: spatel

Subscribers: llvm-commits

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

llvm-svn: 340538
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/test/Transforms/InstCombine/select-binop-cmp.ll