llvm-project/llvm/lib/Transforms/InstCombine
Roman Lebedev 136867931a [InstCombine] Canonicalize variable mask in masked merge
Summary:
Masked merge has a pattern of: `((x ^ y) & M) ^ y`.
But, there is no difference between `((x ^ y) & M) ^ y` and `((x ^ y) & ~M) ^ x`,
We should canonicalize the pattern to non-inverted mask.

https://rise4fun.com/Alive/Yol

Reviewers: spatel, craig.topper

Reviewed By: spatel

Subscribers: llvm-commits

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

llvm-svn: 331112
2018-04-28 15:45:07 +00:00
..
CMakeLists.txt [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
InstCombineAddSub.cpp [PatternMatch] Stabilize the matching order of commutative matchers 2018-04-27 21:23:20 +00:00
InstCombineAndOrXor.cpp [InstCombine] Canonicalize variable mask in masked merge 2018-04-28 15:45:07 +00:00
InstCombineCalls.cpp [X86] Remove the pmuldq/pmuldq intrinsics and replace with native IR. 2018-04-13 06:07:18 +00:00
InstCombineCasts.cpp [InstCombine] simplify code that propagates FMF; NFC 2018-04-07 14:14:23 +00:00
InstCombineCompares.cpp [InstCombine] Fold compare of int constant against a splatted vector of ints 2018-04-03 17:26:20 +00:00
InstCombineInternal.h [InstCombine] Simplify Add with remainder expressions as operands. 2018-04-26 20:52:28 +00:00
InstCombineLoadStoreAlloca.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
InstCombineMulDivRem.cpp [InstCombine] allow more fmul folds with 'reassoc' 2018-04-03 22:19:19 +00:00
InstCombinePHI.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
InstCombineSelect.cpp [InstCombine] clean up foldSelectICmpAnd(); NFC 2018-04-25 16:34:01 +00:00
InstCombineShifts.cpp [InstCombine] move constant check into foldBinOpIntoSelectOrPhi; NFCI 2018-02-28 16:36:24 +00:00
InstCombineSimplifyDemanded.cpp [X86] Remove the pmuldq/pmuldq intrinsics and replace with native IR. 2018-04-13 06:07:18 +00:00
InstCombineVectorOps.cpp [InstCombine] Gracefully handle out of range extractelement indices 2017-12-27 12:00:18 +00:00
InstructionCombining.cpp InstCombine: Fix layering by not including Scalar.h in InstCombine 2018-04-24 00:48:59 +00:00
LLVMBuild.txt