llvm-project/llvm/lib/Transforms
Sanjay Patel dcb8d304c3 [InstCombine] refine UB-handling in shuffle-binop transform
As noted in rL333782, we can be both better for optimization and
safer with this transform:
BinOp (shuffle V1, Mask), C --> shuffle (BinOp V1, NewC), Mask

The only potentially unsafe-to-speculate binops are integer div/rem.
All other binops are always safe (although I don't see a way to
assert that in code here).

For opcodes like shifts that can produce poison, it can't matter
here because we know the lanes with undef are dropped by the
subsequent shuffle.

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

llvm-svn: 333962
2018-06-04 22:26:45 +00:00
..
AggressiveInstCombine Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Coroutines Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Hello
IPO Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
InstCombine [InstCombine] refine UB-handling in shuffle-binop transform 2018-06-04 22:26:45 +00:00
Instrumentation Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
ObjCARC Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Scalar Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Utils Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Vectorize Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
CMakeLists.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00