llvm-project/llvm/test/Transforms/PhaseOrdering/X86
Simon Pilgrim 08d153d806 [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
2022-08-16 16:54:44 +01:00
..
SROA-after-loop-unrolling.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
addsub-inseltpoison.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
addsub.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
ctlz-loop.ll [Passes] add a tail-call-elim pass near the end of the opt pipeline 2022-07-25 15:25:47 -04:00
earlycse-after-simplifycfg-two-entry-phi-node-folding.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
excessive-unrolling.ll [PhaseOrdering] Add test showing excessive unrolling of vector loop. 2022-08-16 16:29:15 +01:00
hoist-load-of-baseptr.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
horiz-math-inseltpoison.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
horiz-math.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
lit.local.cfg
loop-idiom-vs-indvars.ll [Passes] add a tail-call-elim pass near the end of the opt pipeline 2022-07-25 15:25:47 -04:00
masked-memory-ops.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
merge-functions.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
nancvt.ll
peel-before-lv-to-enable-vectorization.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
pixel-splat.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
pr38280.ll [ValueTracking] computeKnownBits - attempt to use a branch condition feeding a phi to improve known bits range (PR38280) 2022-08-16 16:54:44 +01:00
pr48844-br-to-switch-vectorization.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
pr50555.ll
pr52078.ll
pr52253.ll
pr52289.ll
scalarization-inseltpoison.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
scalarization.ll [PhaseOrdering][X86] Use passes="default<O3>" instead of passes='default<O3>' so DOS can evaluate the cmd lines 2022-04-30 19:53:07 +01:00
shuffle-inseltpoison.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
shuffle.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
simplifycfg-late.ll [IR] Enable opaque pointers by default 2022-06-02 09:40:56 +02:00
speculation-vs-tbaa.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
spurious-peeling.ll [PhaseOrdering][X86] Use passes="" instead of passes='' so DOS can evaluate the cmd lines 2022-04-30 19:56:49 +01:00
store-constant-merge.ll
vdiv-nounroll.ll
vdiv.ll [LAA,LV] Add initial support for pointer-diff memory checks. 2022-05-16 15:27:22 +01:00
vector-math.ll [InstCombine] Canonicalize SPF to min/max intrinsics 2022-02-24 09:01:20 +01:00
vector-reduction-known-first-value.ll [Passes] add a tail-call-elim pass near the end of the opt pipeline 2022-07-25 15:25:47 -04:00
vector-reductions-expanded.ll Revert "[NFCI] Regenerate PhaseOrdering test checks" 2022-04-04 15:30:57 +05:00
vector-reductions-logical.ll [InstCombine] Use IRBuilder in freeze pushing transform (PR55619) 2022-05-24 15:48:28 +02:00
vector-reductions.ll [Passes] add a tail-call-elim pass near the end of the opt pipeline 2022-07-25 15:25:47 -04:00