1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/Transforms/LoopVectorize
Roman Tereshin 91525f438c Revert "[SCEV][NFC] Check NoWrap flags before lexicographical comparison of SCEVs"
This reverts r319889.

Unfortunately, wrapping flags are not a part of SCEV's identity (they
do not participate in computing a hash value or in equality
comparisons) and in fact they could be assigned after the fact w/o
rebuilding a SCEV.

Grep for const_cast's to see quite a few of examples, apparently all
for AddRec's at the moment.

So, if 2 expressions get built in 2 slightly different ways: one with
flags set in the beginning, the other with the flags attached later
on, we may end up with 2 expressions which are exactly the same but
have their operands swapped in one of the commutative N-ary
expressions, and at least one of them will have "sorted by complexity"
invariant broken.

2 identical SCEV's won't compare equal by pointer comparison as they
are supposed to.

A real-world reproducer is added as a regression test: the issue
described causes 2 identical SCEV expressions to have different order
of operands and therefore compare not equal, which in its turn
prevents LoadStoreVectorizer from vectorizing a pair of consecutive
loads.

On a larger example (the source of the test attached, which is a
bugpoint) I have seen even weirder behavior: adding a constant to an
existing SCEV changes the order of the existing terms, for instance,
getAddExpr(1, ((A * B) + (C * D))) returns (1 + (C * D) + (A * B)).

Differential Revision: https://reviews.llvm.org/D40645

llvm-svn: 340777
2018-08-27 21:41:37 +00:00
..
AArch64 [AArch64] Add custom lowering for v4i8 trunc store 2018-06-27 13:58:46 +00:00
AMDGPU LV: Don't insert runtime ptr checks on divergent targets 2017-08-02 21:43:08 +00:00
ARM [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
Hexagon [LV] Introduce TTI::getMinimumVF 2018-04-13 20:16:32 +00:00
PowerPC
SystemZ [LV] Fix for PR38110, LV encountered llvm_unreachable() 2018-07-24 22:30:31 +00:00
X86 Revert "[SCEV][NFC] Check NoWrap flags before lexicographical comparison of SCEVs" 2018-08-27 21:41:37 +00:00
XCore
12-12-11-if-conv.ll
2012-10-20-infloop.ll
2012-10-22-isconsec.ll
2016-07-27-loop-vec.ll
align.ll
bsd_regex.ll
bzip_reverse_loops.ll
calloc.ll
cast-induction.ll
conditional-assignment.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
consec_no_gep.ll
consecutive-ptr-uniforms.ll [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
control-flow.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
cpp-new-array.ll
dbg.value.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
dead_instructions.ll
debugloc.ll Avoid dbg.value use-before-def in a few tests (NFC) 2018-08-21 23:42:08 +00:00
diag-missing-instr-debug-loc.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
diag-with-hotness-info-2.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
diag-with-hotness-info.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
discriminator.ll Do not add discriminator encoding for debug intrinsics. 2017-10-26 21:20:52 +00:00
ee-crash.ll
exact.ll
explicit_outer_detection.ll [LV][VPlan] Detect outer loops for explicit vectorization. 2018-04-24 17:04:17 +00:00
explicit_outer_nonuniform_inner.ll [LV][VPlan] Detect outer loops for explicit vectorization. 2018-04-24 17:04:17 +00:00
explicit_outer_uniform_diverg_branch.ll [LV][VPlan] Detect outer loops for explicit vectorization. 2018-04-24 17:04:17 +00:00
fcmp-vectorize.ll [LoopVectorize] Fix assertion failure in Fcmp vectorization 2017-08-08 18:07:44 +00:00
first-order-recurrence.ll [LV] Fix PR34711 - widen instruction ranges when sinking casts 2017-10-05 12:41:49 +00:00
flags.ll
float-induction.ll [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
float-reduction.ll
funcall.ll
gcc-examples.ll
gep_with_bitcast.ll
global_alias.ll
hints-trans.ll
hoist-loads.ll [LV] Move isLegalMasked* functions from Legality to CostModel 2018-02-26 11:06:36 +00:00
i8-induction.ll [DebugInfo][LoopVectorize] Preserve DL in induction PHI and Add 2018-07-10 13:29:50 +00:00
icmp-uniforms.ll
if-conv-crash.ll
if-conversion-edgemasks.ll
if-conversion-nest.ll [LV] Model masking in VPlan, introducing VPInstructions 2017-11-20 12:01:47 +00:00
if-conversion-reduction.ll
if-conversion.ll [LV] Fix PR34523 - avoid generating redundant selects 2017-09-13 06:28:37 +00:00
if-pred-non-void.ll [LV] Fix PR34248 - recommit D32871 after revert r311304 2017-08-27 12:55:46 +00:00
if-pred-not-when-safe.ll
if-pred-stores.ll [LV] Avoid redundant operations manipulating masks 2017-07-31 13:21:42 +00:00
incorrect-dom-info.ll
increment.ll
induction_plus.ll
induction-step.ll [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
induction.ll [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
infiniteloop.ll
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
interleaved-accesses-1.ll
interleaved-accesses-2.ll
interleaved-accesses-3.ll
interleaved-accesses-alias.ll [LV] Interleaved access vectorization: fix computing new alias info 2017-12-06 22:42:24 +00:00
interleaved-accesses-pred-stores.ll
interleaved-accesses.ll [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
interleaved-acess-with-remarks.ll [LV] Fix analyzeInterleaving when -pass-remarks enabled 2018-02-10 00:07:45 +00:00
intrinsic.ll
iv_outside_user.ll
lcssa-crash.ll
legal_preheader_check.ll [LV] Remove unnecessary DoExtraAnalysis guard (silent bug) 2017-12-20 13:28:38 +00:00
lifetime.ll
loop-form.ll
loop-scalars.ll
loop-vect-memdep.ll
memdep.ll [LV] Fix maximum legal VF calculation 2017-09-14 07:40:02 +00:00
metadata-unroll.ll
metadata-width.ll
metadata.ll
miniters.ll
minmax_reduction.ll [InstCombine] remove extract-of-select vector transform (2nd try) 2017-09-25 20:30:53 +00:00
multi-use-reduction-bug.ll
multiple-address-spaces.ll
multiple-strides-vectorization.ll [Loop Vectorize] Added a separate metadata 2017-08-20 10:32:41 +00:00
no_array_bounds.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
no_idiv_reduction.ll
no_int_induction.ll
no_outside_user.ll [LV] Vectorize loops where non-phi instructions used outside loop 2018-08-21 14:40:27 +00:00
no_switch.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
noalias-md-licm.ll
noalias-md.ll
nofloat.ll
non-const-n.ll
nontemporal.ll
nsw-crash.ll
opt.ll
optsize.ll
partial-lcssa.ll
phi-cost.ll [InstCombine] Teach select01 helper of foldSelectIntoOp to handle vector splats 2017-08-28 22:00:27 +00:00
phi-hang.ll
pr25281.ll
pr28541.ll
pr30654-phiscev-sext-trunc.ll Revert r325687 (workaround for PR36032). 2018-03-22 22:04:39 +00:00
pr31098.ll
pr31190.ll
pr32859.ll
pr33706.ll
pr34681.ll [LV/LAA] Avoid specializing a loop for stride=1 when this predicate implies a 2017-11-05 16:53:15 +00:00
pr35743.ll [NFC] Add tests for PR35743 2018-02-05 08:09:49 +00:00
pr35773.ll Revert r325687 (workaround for PR36032). 2018-03-22 22:04:39 +00:00
pr36311.ll [LV] Adding test for r327109 2018-03-09 18:02:36 +00:00
pr36983.ll [LV] Fix PR36983. For a given recurrence, fix all phis in exit block 2018-06-08 08:21:20 +00:00
pr37248.ll [LV] Fix for PR37248, Broadcast codegen incorrectly assumed vector loop body is single basic block 2018-05-08 18:57:34 +00:00
preserve-dbg-loc-and-loop-metadata.ll [DebugInfo][LoopVectorize] Preserve DL in generated phi instruction 2018-07-04 10:16:55 +00:00
ptr_loops.ll
ptr-induction.ll
read-only.ll
reduction-small-size.ll [LV] Use Demanded Bits and ValueTracking for reduction type-shrinking 2018-02-04 15:42:24 +00:00
reduction.ll add a missed case for binary op FMF propagation under select folds 2018-08-16 20:59:45 +00:00
reverse_induction.ll
reverse_iter.ll
runtime-check-address-space.ll
runtime-check-readonly-address-space.ll
runtime-check-readonly.ll
runtime-check.ll [LoopVectorize] regenerate full checks; NFC 2018-06-21 16:54:32 +00:00
runtime-limit.ll
safegep.ll
same-base-access.ll
scalar_after_vectorization.ll [LV] Preserve inbounds on created GEPs 2018-05-01 15:35:08 +00:00
scalar-select.ll
scev-exitlim-crash.ll
simple-unroll.ll
skip-iterations.ll NFC: update the test comments in LV test about early exit loops 2018-08-21 21:12:02 +00:00
small-loop.ll
start-non-zero.ll
store-shuffle-bug.ll
struct_access.ll
tbaa-nodep.ll
tripcount.ll Verify profile data confirms large loop trip counts. 2018-02-07 23:29:52 +00:00
undef-inst-bug.ll
unroll_novec.ll
unroll-novec-memcheck-metadata.ll
unroll.ll
unsafe-dep-remark.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
unsized-pointee-crash.ll
value-ptr-bug.ll
vect-phiscev-sext-trunc.ll Revert r325687 (workaround for PR36032). 2018-03-22 22:04:39 +00:00
vect.omp.persistence.ll [tests] Cleanup vect.omp.persistence.ll test. 2017-07-25 10:35:16 +00:00
vect.stats.ll
vector-geps.ll
vectorize-once.ll [Loop Vectorize] Added a separate metadata 2017-08-20 10:32:41 +00:00
version-mem-access.ll [LV/LAA] Avoid specializing a loop for stride=1 when this predicate implies a 2017-11-05 16:53:15 +00:00
vplan_hcfg_stress_test.ll [VPlan] Reland r332654 and silence unused func warning 2018-05-21 18:14:23 +00:00
write-only.ll
zero-sized-pointee-crash.ll