llvm/lib/Transforms/InstCombine
Dinesh Dwivedi 52c92df181 This patch enables SimplifyUsingDistributiveLaws() to handle following pattens.
(X >> Z) & (Y >> Z)  -> (X&Y) >> Z  for all shifts.
(X >> Z) | (Y >> Z)  -> (X|Y) >> Z  for all shifts.
(X >> Z) ^ (Y >> Z)  -> (X^Y) >> Z  for all shifts.

These patterns were previously handled separately in visitAnd()/visitOr()/visitXor().

Differential Revision: http://reviews.llvm.org/D4951


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216443 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-26 08:53:32 +00:00
..
CMakeLists.txt Tidy up a bit. No functional change. 2013-04-05 21:20:12 +00:00
InstCombine.h InstCombine: Fold ((A | B) & C1) ^ (B & C2) -> (A & C1) ^ B if C1^C2=-1 2014-08-21 05:14:48 +00:00
InstCombineAddSub.cpp InstCombine: sub nsw %x, C -> add nsw %x, -C if C isn't INT_MIN 2014-08-22 16:41:23 +00:00
InstCombineAndOrXor.cpp This patch enables SimplifyUsingDistributiveLaws() to handle following pattens. 2014-08-26 08:53:32 +00:00
InstCombineCalls.cpp Canonicalization for @llvm.assume 2014-07-25 21:45:17 +00:00
InstCombineCasts.cpp Fix comment in InstCombiner::visitAddrSpaceCast. 2014-07-16 01:34:21 +00:00
InstCombineCompares.cpp InstCombine: Properly optimize or'ing bittests together 2014-08-24 09:10:57 +00:00
InstCombineLoadStoreAlloca.cpp AA metadata refactoring (introduce AAMDNodes) 2014-07-24 12:16:19 +00:00
InstCombineMulDivRem.cpp Remove an InstCombine that transformed patterns like (x * uitofp i1 y) to (select y, x, 0.0) when the multiply has fast math flags set. 2014-08-17 03:51:29 +00:00
InstCombinePHI.cpp Repace SmallPtrSet with SmallPtrSetImpl in function arguments to avoid needing to mention the size. 2014-08-21 05:55:13 +00:00
InstCombineSelect.cpp This removes TODO added in http://reviews.llvm.org/D3658 2014-06-12 14:06:00 +00:00
InstCombineShifts.cpp fixed typo in comment 2014-07-22 04:57:06 +00:00
InstCombineSimplifyDemanded.cpp InstCombine: Don't unconditionally preserve 'nuw' when shrinking constants 2014-08-22 17:11:04 +00:00
InstCombineVectorOps.cpp fixed some typos 2014-07-07 22:13:58 +00:00
InstCombineWorklist.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
InstructionCombining.cpp This patch enables SimplifyUsingDistributiveLaws() to handle following pattens. 2014-08-26 08:53:32 +00:00
LLVMBuild.txt
Makefile