diff options
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp index 418302d..e721f0c 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp @@ -3044,6 +3044,11 @@ Instruction *InstCombinerImpl::visitFNeg(UnaryOperator &I) { return replaceInstUsesWith(I, NewCopySign); } + // fneg (shuffle x, Mask) --> shuffle (fneg x), Mask + ArrayRef<int> Mask; + if (match(OneUse, m_Shuffle(m_Value(X), m_Poison(), m_Mask(Mask)))) + return new ShuffleVectorInst(Builder.CreateFNegFMF(X, &I), Mask); + return nullptr; } |