llvm-project/llvm/test
Sjoerd Meijer d1522513d4 [ARM] Reimplement MVE Tail-Predication pass using @llvm.get.active.lane.mask
To set up a tail-predicated loop, we need to to calculate the number of
elements processed by the loop. We can now use intrinsic
@llvm.get.active.lane.mask() to do this, which is emitted by the vectoriser in
D79100. This intrinsic generates a predicate for the masked loads/stores, and
consumes the Backedge Taken Count (BTC) as its second argument. We can now use
that to reconstruct the loop tripcount, instead of the IR pattern match
approach we were using before.

Many thanks to Eli Friedman and Sam Parker for all their help with this work.

This also adds overflow checks for the different, new expressions that we
create: the loop tripcount, and the sub expression that calculates the
remaining elements to be processed. For the latter, SCEV is not able to
calculate precise enough bounds, so we work around that at the moment, but is
not entirely correct yet, it's conservative. The overflow checks can be
overruled with a force flag, which is thus potentially unsafe (but not really
because the vectoriser is the only place where this intrinsic is emitted at the
moment). It's also good to mention that the tail-predication pass is not yet
enabled by default.  We will follow up to see if we can implement these
overflow checks better, either by a change in SCEV or we may want revise the
definition of llvm.get.active.lane.mask.

Differential Revision: https://reviews.llvm.org/D79175
2020-06-17 15:17:42 +01:00
..
Analysis [DA] propagate loop live-out values that get used in a branch 2020-06-17 09:21:00 +05:30
Assembler Fix convertBFloatAPFloatToAPInt for NaN/Inf values 2020-06-05 17:22:43 -07:00
Bindings [DebugInfo] Upgrade DISubrange to support Fortran dynamic arrays 2020-05-28 13:46:41 +05:30
Bitcode [strictfp] Replace dangling strictfp attrs with nobuiltin 2020-06-15 10:05:35 -04:00
BugPoint
CodeGen [ARM] Reimplement MVE Tail-Predication pass using @llvm.get.active.lane.mask 2020-06-17 15:17:42 +01:00
DebugInfo [DebugInfo] Support parsing and dumping of DWARF64 macro units. 2020-06-17 12:57:54 +07:00
Demangle
Examples
ExecutionEngine [ORC] Honor linker private global prefix on symbol names. 2020-06-15 10:28:36 -07:00
Feature
FileCheck [FileCheck] Add missing %ProtectFileCheckOutput to FileCheck tests 2020-06-10 12:40:35 -04:00
Instrumentation [MSAN] Pass Origin by parameter to __msan_warning functions 2020-06-15 17:49:18 -07:00
Integer
JitListener
LTO [SampleFDO] Add use-sample-profile function attribute. 2020-06-02 17:23:17 -07:00
Linker [IR] Add missing GlobalAlias copying of ThreadLocalMode attribute 2020-06-16 20:15:27 -07:00
MC Fix debug line info when line markers are present inside macros. 2020-06-16 16:13:11 +01:00
MachineVerifier [NFC] Remove unnecessary require global-isel from tests 2020-06-15 16:35:18 +02:00
Object [llvm][llvm-nm] add TextAPI/MachO support 2020-06-11 18:54:16 -07:00
ObjectYAML [NFC] mv llvm/test/tools/obj2yaml/macho-DWARF-debug-ranges.yaml llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml 2020-06-14 16:39:15 +08:00
Other [CallPrinter] Adding heat coloring to CallPrinter 2020-06-16 21:15:29 +00:00
Reduce
SafepointIRVerifier [Tests] Migrate a number of tests to gc-live bundle representation 2020-06-05 16:44:04 -07:00
Support
SymbolRewriter
TableGen [TableGen] Fix non-standard escape warnings for braces in InstAlias 2020-05-28 09:36:24 +00:00
ThinLTO/X86 [ThinLTO] Compute the basic block count across modules. 2020-05-28 10:33:05 -07:00
Transforms Revert "[InlineCost] InlineCostAnnotationWriterPass introduced" 2020-06-17 14:02:34 +00:00
Unit
Verifier AMDGPU: Fix missing immarg on buffer.atomic.fadd intrinsic 2020-06-05 14:34:07 -04:00
YAMLParser
tools [llvm-readobj] - Do not crash when GnuHashTable->symndx is greater than the dynamic symbols count. 2020-06-17 14:26:36 +03:00
.clang-format
CMakeLists.txt [CMake] Change target 'check' from 'check-llvm' to 'check-all' 2020-05-29 14:15:27 -07:00
TestRunner.sh
lit.cfg.py
lit.site.cfg.py.in