mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 07:37:34 +00:00
Implement Instcombine/and.ll:test34
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26155 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1f7b4e685e
commit
2082ad9b41
@ -2439,6 +2439,18 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
|
||||
InsertNewInstBefore(Or, I);
|
||||
return BinaryOperator::createNot(Or);
|
||||
}
|
||||
|
||||
{
|
||||
Value *A = 0, *B = 0;
|
||||
ConstantInt *C1 = 0, *C2 = 0;
|
||||
if (match(Op0, m_Or(m_Value(A), m_Value(B))))
|
||||
if (A == Op1 || B == Op1) // (A | ?) & A --> A
|
||||
return ReplaceInstUsesWith(I, Op1);
|
||||
if (match(Op1, m_Or(m_Value(A), m_Value(B))))
|
||||
if (A == Op0 || B == Op0) // A & (A | ?) --> A
|
||||
return ReplaceInstUsesWith(I, Op0);
|
||||
}
|
||||
|
||||
|
||||
if (SetCondInst *RHS = dyn_cast<SetCondInst>(Op1)) {
|
||||
// (setcc1 A, B) & (setcc2 A, B) --> (setcc3 A, B)
|
||||
|
Loading…
x
Reference in New Issue
Block a user