mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
InstCombine: Canonicalize (2^n)-1 - x into (2^n)-1 ^ x iff x is known to be smaller than 2^n.
This has the obvious advantage of being commutable and is always a win on x86 because const - x wastes a register there. On less weird architectures this may lead to a regression because other arithmetic doesn't fuse with it anymore. I'll address that problem in a followup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147254 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -587,6 +587,9 @@ Instruction *InstCombiner::visitSub(BinaryOperator &I) {
|
||||
ConstantInt *C2;
|
||||
if (match(Op1, m_Add(m_Value(X), m_ConstantInt(C2))))
|
||||
return BinaryOperator::CreateSub(ConstantExpr::getSub(C, C2), X);
|
||||
|
||||
if (SimplifyDemandedInstructionBits(I))
|
||||
return &I;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user