1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/test
Jiangning Liu 3fc6a7e69d Fixed a bug in memory dependence checking module of loop vectorization. The following loop should not be vectorized with current algorithm.
{code}
// loop body
   ... = a[i]          (1)
    ... = a[i+1]       (2)
 .......
a[i+1] = ....          (3)
   a[i] = ...          (4)
{code}

The algorithm tries to collect memory access candidates from AliasSetTracker, and then check memory dependences one another. The memory accesses are unique in AliasSetTracker, and a single memory access in AliasSetTracker may map to multiple entries in AccessAnalysis, which could cover both 'read' and 'write'. Originally the algorithm only checked 'write' entry in Accesses if only 'write' exists. This is incorrect and the consequence is it ignored all read access, and finally some RAW and WAR dependence are missed.

For the case given above, if we ignore two reads, the dependence between (1) and (3) would not be able to be captured, and finally this loop will be incorrectly vectorized.

The fix simply inserts a new loop to find all entries in Accesses. Since it will skip most of all other memory accesses by checking the Value pointer at the very beginning of the loop, it should not increase compile-time visibly.

llvm-svn: 225159
2015-01-05 10:08:58 +00:00
..
Analysis IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
Assembler DebugInfo: Update testcase to actually check something 2014-12-16 07:08:19 +00:00
Bindings [OCaml] Fix bitrot in tests. 2014-12-30 03:24:14 +00:00
Bitcode IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
BugPoint IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
CodeGen [PowerPC] Enable speculation of cttz/ctlz 2015-01-05 05:24:42 +00:00
DebugInfo Reverting 225045 and 225043 and XFAIL multiline.ll on hexagon 2014-12-31 17:14:35 +00:00
ExecutionEngine Small model and JIT generally don't go well with each other. 2014-11-25 17:14:22 +00:00
Feature IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
FileCheck
Instrumentation [asan] simplify the tracing code, make it use the same guard variables as coverage 2015-01-03 00:54:43 +00:00
Integer
JitListener IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
Linker Reapply "Linker: Drop superseded subprograms" 2014-12-18 01:05:33 +00:00
LTO llvm-lto: Add testing coverage for local contexts 2014-12-17 02:00:38 +00:00
MC [PowerPC] Add support for the CMPB instruction 2015-01-03 01:16:37 +00:00
Object [Object] Don't crash on empty export lists. 2014-12-19 02:31:01 +00:00
Other [PM] Wire up support for explicitly running the verifier pass. 2015-01-05 00:08:53 +00:00
SymbolRewriter Transform: add SymbolRewriter pass 2014-11-07 21:32:08 +00:00
TableGen
tools llvm-readobj: add support to dump COFF export tables 2015-01-03 21:35:09 +00:00
Transforms Fixed a bug in memory dependence checking module of loop vectorization. The following loop should not be vectorized with current algorithm. 2015-01-05 10:08:58 +00:00
Unit
Verifier IR: Stop printing 'metadata' in Metadata::print() 2014-12-16 07:40:31 +00:00
YAMLParser
.clang-format
CMakeLists.txt Revert r224149, llvm-dsymutil was already here. 2014-12-12 21:25:07 +00:00
lit.cfg Teach lit.cfg to recognize -windows-gnu in addition to -mingw32. 2014-12-17 09:55:15 +00:00
lit.site.cfg.in [lit] Make config.llvm_lib_dir available on cmake, too. 2014-12-30 03:24:11 +00:00
Makefile [lit] Make config.llvm_lib_dir available on cmake, too. 2014-12-30 03:24:11 +00:00
Makefile.tests
TestRunner.sh