[all-commits] [llvm/llvm-project] 08d153: [ValueTracking] computeKnownBits - attempt to use ...
Simon Pilgrim via All-commits
all-commits at lists.llvm.org
Tue Aug 16 08:55:00 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 08d153d806b500a3d819bbc57d8c4ddcb568f26e
https://github.com/llvm/llvm-project/commit/08d153d806b500a3d819bbc57d8c4ddcb568f26e
Author: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: 2022-08-16 (Tue, 16 Aug 2022)
Changed paths:
M llvm/lib/Analysis/ValueTracking.cpp
M llvm/test/Transforms/InstCombine/known-phi-br.ll
M llvm/test/Transforms/InstCombine/remove-loop-phi-fastmul.ll
M llvm/test/Transforms/PhaseOrdering/X86/pr38280.ll
Log Message:
-----------
[ValueTracking] computeKnownBits - attempt to use a branch condition feeding a phi to improve known bits range (PR38280)
If computeKnownBits encounters a phi node, and we fail to determine any known bits through direct analysis, see if the incoming value is part of a branch condition feeding the phi.
Handle cases where icmp(IncomingValue PRED Constant) is driving a branch instruction feeding that phi node - at the moment this only handles EQ/ULT/ULE predicate cases as they are the most straightforward to handle and most likely for branch-loop 'max upper bound' cases - we can extend this if/when necessary.
I investigated a more general icmp(LHS PRED RHS) KnownBits system, but the hard limits we put on value tracking depth through phi nodes meant that we were mainly catching constants anyhow.
Fixes the pointless vectorization in PR38280 / Issue #37628 (excessive unrolling still needs handling though)
Differential Revision: https://reviews.llvm.org/D131838
More information about the All-commits
mailing list