[llvm] [InstCombine] Fold +0.0 - x to -x if we known x is non positive zero (PR #215871)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 13 13:46:02 PDT 2026
================
@@ -3290,6 +3290,18 @@ Instruction *InstCombinerImpl::visitFSub(BinaryOperator &I) {
if (match(&I, m_FNeg(m_Value(Op))))
return UnaryOperator::CreateFNegFMF(Op, &I);
+ // fsub +0.0, X ==> fneg X if known X is never +0.0
+ if (match(I.getOperand(0), m_PosZeroFP())) {
+ Value *X = I.getOperand(1);
+ DenormalMode Mode = I.getFunction()->getDenormalMode(
+ X->getType()->getScalarType()->getFltSemantics());
+ KnownFPClass Known = computeKnownFPClass(
+ X, fcPosZero | fcSubnormal, getSimplifyQuery().getWithInstruction(&I));
+ if (Known.isKnownNeverLogicalPosZero(Mode) &&
+ (Mode.Input == DenormalMode::IEEE || Known.isKnownNeverSubnormal()))
----------------
arsenm wrote:
I'm not sure why you need the extra checks after Known.isKnownNeverLogicalPosZero
https://github.com/llvm/llvm-project/pull/215871
More information about the llvm-commits
mailing list