llvm-mirror/test
Hal Finkel 7956f36dac [LoopVectorize] Don't consider conditional-load dereferenceability for marked parallel loops
I really thought we were doing this already, but we were not. Given this input:

void Test(int *res, int *c, int *d, int *p) {
  for (int i = 0; i < 16; i++)
    res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
}

we did not vectorize the loop. Even with "assume_safety" the check that we
don't if-convert conditionally-executed loads (to protect against
data-dependent deferenceability) was not elided.

One subtlety: As implemented, it will still prefer to use a masked-load
instrinsic (given target support) over the speculated load. The choice here
seems architecture specific; the best option depends on how expensive the
masked load is compared to a regular load. Ideally, using the masked load still
reduces unnecessary memory traffic, and so should be preferred. If we'd rather
do it the other way, flipping the order of the checks is easy.

The LangRef is updated to make explicit that llvm.mem.parallel_loop_access also
implies that if conversion is okay.

Differential Revision: http://reviews.llvm.org/D19512

llvm-svn: 267514
2016-04-26 02:00:36 +00:00
..
Analysis [SCEV] Improve the run-time checking of the NoWrap predicate 2016-04-25 09:27:16 +00:00
Assembler DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
Bindings [OCaml] Expose the LLVM diagnostic handler 2016-04-10 13:55:53 +00:00
Bitcode BitcodeReader: Fix some holes in upgrade from r267296 2016-04-24 06:52:01 +00:00
BugPoint [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
CodeGen [WebAssembly] Account for implicit operands when computing operand indices. 2016-04-26 01:40:56 +00:00
DebugInfo Resubmit "Refactor raw pdb dumper into library" 2016-04-25 17:38:08 +00:00
Examples
ExecutionEngine [RuntimeDyldELF] Handle GOTPCRELX/REX_GOTPCRELX. 2016-04-24 01:36:37 +00:00
Feature [NVVM] Remove noduplicate attribute from synchronizing intrinsics. 2016-03-22 22:08:01 +00:00
FileCheck Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. 2016-02-29 22:13:03 +00:00
Instrumentation DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
Integer
JitListener [PR27284] Reverse the ownership between DICompileUnit and DISubprogram. 2016-04-15 15:57:41 +00:00
LibDriver LibDriver: Silently do nothing when provided no inputs. 2016-04-13 19:36:04 +00:00
Linker DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
LTO Refactor the InternalizePass into a helper class, and expose it through a public free function (NFC) 2016-04-13 05:25:08 +00:00
MC ARM: put correct symbol index on indirect pointers in __thread_ptr. 2016-04-25 22:36:07 +00:00
Object Fix a typo in an error message. Caught by Sean Silva! 2016-04-21 21:20:40 +00:00
Other Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
SymbolRewriter
TableGen Introduce a "patchable-function" function attribute 2016-04-19 05:24:47 +00:00
ThinLTO/X86 Add an internalization step to the ThinLTOCodeGenerator 2016-04-24 03:18:01 +00:00
tools [gold] Fix linkInModule and extend common.ll test. 2016-04-25 18:23:29 +00:00
Transforms [LoopVectorize] Don't consider conditional-load dereferenceability for marked parallel loops 2016-04-26 02:00:36 +00:00
Unit Replace hardcoded comment at 'lit.site.cfg.in' 2016-04-16 06:47:41 +00:00
Verifier Verifier: Verify that each inlinable callsite of a debug-info-bearing function 2016-04-24 22:23:13 +00:00
YAMLParser
.clang-format
CMakeLists.txt Moving llvm-test-depends and test-depends into the Tests folder; NFC, this simply cleans up the generated solution so that these targets don't live in the root folder of the IDE. 2016-04-12 15:09:14 +00:00
lit.cfg test: Always treat .mir files as tests even outside of CodeGen/MIR 2016-04-04 21:23:44 +00:00
lit.site.cfg.in Replace hardcoded comment at 'lit.site.cfg.in' 2016-04-16 06:47:41 +00:00
TestRunner.sh