[PATCH] D86363: InstCombine transform pattern "(A ^ B) | ~(A | B) -> ~(A & B)" added
Dávid Bolvanský via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 21 12:41:03 PDT 2020
xbolva00 added subscribers: spatel, xbolva00.
xbolva00 added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp:2699
+ if (match(Op0, m_Xor(m_Value(A), m_Value(B))))
+ if (match(Op1, m_Not(m_Or(m_Value(A), m_Value(B)))))
+ return BinaryOperator::CreateNot(Builder.CreateAnd(A, B));
----------------
m_Specific ?
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp:2703
// (A ^ B) | ((B ^ C) ^ A) -> (A ^ B) | C
if (match(Op0, m_Xor(m_Value(A), m_Value(B))))
if (match(Op1, m_Xor(m_Xor(m_Specific(B), m_Value(C)), m_Specific(A))))
----------------
Does this work for commuted case? @spatel
================
Comment at: llvm/test/Transforms/InstCombine/or-and.ll:13
+ %6 = or i32 %3, %5
+ ret i32 %6
+}
----------------
Add vector tests
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D86363/new/
https://reviews.llvm.org/D86363
More information about the llvm-commits
mailing list