llvm-project/llvm/unittests/Analysis
Francesco Petrogalli 0be81968a2 [VectorUtils] Introduce the Vector Function Database (VFDatabase).
This patch introduced the VFDatabase, the framework proposed in
http://lists.llvm.org/pipermail/llvm-dev/2019-June/133484.html. [*]

In this patch the VFDatabase is used to bridge the TargetLibraryInfo
(TLI) calls that were previously used to query for the availability of
vector counterparts of scalar functions.

The VFISAKind field `ISA` of VFShape have been moved into into VFInfo,
under the assumption that different vector ISAs may provide the same
vector signature. At the moment, the vectorizer accepts any of the
available ISAs as long as the signature provided by the VFDatabase
matches the one expected in the vectorization process. For example,
when targeting AVX or AVX2, which both have 256-bit registers, the IR
signature of the two vector functions associated to the two ISAs is
the same. The `getVectorizedFunction` method at the moment returns the
first available match. We will need to add more heuristics to the
search system to decide which of the available version (TLI, AVX,
AVX2, ...)  the system should prefer, when multiple versions with the
same VFShape are present.

Some of the code in this patch is based on the work done by Sumedh
Arani in https://reviews.llvm.org/D66025.

[*] Notice that in the proposal the VFDatabase was called SVFS. The
name VFDatabase is more in line with LLVM recommendations for
naming classes and variables.

Differential Revision: https://reviews.llvm.org/D67572
2019-12-10 16:36:44 +00:00
..
AliasAnalysisTest.cpp [unittests] Add InitializePasses.h includes 2019-11-13 19:42:58 -08:00
AliasSetTrackerTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BasicAliasAnalysisTest.cpp [AliasAnalysis] Initialize a member variable that may be used by unit test. 2019-08-02 08:05:14 +00:00
BlockFrequencyInfoTest.cpp Replace llvm::isPodLike<...> by llvm::is_trivially_copyable<...> 2019-01-20 21:19:56 +00:00
BranchProbabilityInfoTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CFGTest.cpp [unittests] Add InitializePasses.h includes 2019-11-13 19:42:58 -08:00
CGSCCPassManagerTest.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
CMakeLists.txt [SVFS] Vector Function ABI demangling. 2019-09-19 17:47:32 +00:00
CallGraphTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CaptureTrackingTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DivergenceAnalysisTest.cpp [opaque pointer types] Add a FunctionCallee wrapper type, and use it. 2019-02-01 02:28:03 +00:00
DomTreeUpdaterTest.cpp [DTU] Refine the interface and logic of applyUpdates 2019-02-22 13:48:38 +00:00
GlobalsModRefTest.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
IVDescriptorsTest.cpp Save the induction binary operator in IVDescriptors for non FP induction variables. 2019-05-14 13:26:36 +00:00
LazyCallGraphTest.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
LoopInfoTest.cpp [LOOPGUARD] Remove asserts in getLoopGuardBranch 2019-10-06 16:39:43 +00:00
MemoryBuiltinsTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MemorySSATest.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
OrderedBasicBlockTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
OrderedInstructionsTest.cpp [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
PhiValuesTest.cpp [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
ProfileSummaryInfoTest.cpp [PGO][PGSO] ProfileSummary changes. 2019-09-24 22:17:51 +00:00
ScalarEvolutionTest.cpp [SCEV] Disable canonical expansion for non-affine addrecs. 2019-09-24 23:21:07 +00:00
SparsePropagation.cpp [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
TBAATest.cpp [opaque pointer types] Add a FunctionCallee wrapper type, and use it. 2019-02-01 02:28:03 +00:00
TargetLibraryInfoTest.cpp [SimplifyLibCalls] Fold more fortified functions into non-fortified variants 2019-05-31 22:41:36 +00:00
UnrollAnalyzerTest.cpp [unittests] Add InitializePasses.h includes 2019-11-13 19:42:58 -08:00
ValueLatticeTest.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ValueTrackingTest.cpp isBytewiseValue checks ConstantVector element by element 2019-07-12 22:37:55 +00:00
VectorFunctionABITest.cpp [VectorUtils] Introduce the Vector Function Database (VFDatabase). 2019-12-10 16:36:44 +00:00
VectorUtilsTest.cpp [fix][unittests][llvm] Fix running unit tests without assertions. [NFCI] 2019-12-05 03:28:19 +00:00