llvm-project/llvm/unittests
Michael Kruse f44ee0f5e7 [OpenMPIRBuilder] Implement CreateCanonicalLoop.
CreateCanonicalLoop generates a standardized control flow structure for OpenMP canonical for loops. The structure can be consumed by loop-associated directives such as worksharing-loop, distribute, simd etc. as well as loop transformations such as tile and unroll.

This is a first design without considering all complexities yet. The control-flow emits more basic block than strictly necessary, but these will be optimized by CFGSimplify anyway, provide a nice separation of concerns and might later be useful with more complex scenarios. I successfully implemented a basic tile construct using this API, which is not part of this patch.

The fundamental building block is the CreateCanonicalLoop that only takes the loop trip count and operates on the logical iteration spaces only. An overloaded CreateCanonicalLoop for using LB, UB, Increment is provided as well, but at least for C++, Clang will need to implement a loop counter to logical induction variable mapping anyway, since iterator overload resolution cannot be done in LLVMFrontend.

As there currently is no user for CreateCanonicalLoop, it is only called from unittests. Similarly, CanonicalLoopInfo::eraseFromParent() is used in my file implementation and might be generally useful for implementing loop-associated constructs, but is not used in this patch itself.

The following non-exhaustive list describes not yet covered items:
 * collapse clause (including non-rectangular and non-perfectly nested); idea is to provide a OpenMPIRBuilder::collapseLoopNest method consuming multiple nested loops and returning a new CanonicalLoopInfo that can be used for loop-associated directives.
 * simarly: ordered clause for DOACROSS loops
 * branch weights
 * Cancellation point (?)
 * AllocaIP
 * break statement (if needed at all)
 * Exceptions (if not completely handled in the front-end)
  * Using it in Clang; this requires implementing at least one loop-associated construct.
 * ...

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D90830
2020-11-09 15:03:32 -06:00
..
ADT [STLExtras] Add append_range helper. 2020-11-05 16:20:02 -08:00
Analysis [CaptureTrackingTest] Add missing override marker (NFC) 2020-11-07 11:44:02 +01:00
AsmParser [SVE] Remove calls to VectorType::getNumElements from AsmParserTest 2020-07-07 14:55:42 -07:00
BinaryFormat [BinaryFormat] Add formatv support for DW_OP constants 2020-06-08 15:27:44 +02:00
Bitcode [strictfp] Replace dangling strictfp attrs with nobuiltin 2020-06-15 10:05:35 -04:00
Bitstream
CodeGen Revert rGbbeb08497ce58 "Revert "[GlobalISel] GISelKnownBits::computeKnownBitsImpl - Replace TargetOpcode::G_MUL handling with the common KnownBits::computeForMul implementation"" 2020-11-05 10:39:53 +00:00
DebugInfo llvm-dwarfdump: Support verbose printing DW_OP_convert to print the CU local offset before the resolved absolute offset 2020-10-23 18:50:15 -07:00
Demangle
ExecutionEngine [ORC] Update Symbol Lookup / DefinitionGenerator system. 2020-10-19 01:59:03 -07:00
FileCheck Reland [FileCheck] Move FileCheck implementation out of LLVMSupport into its own library 2020-09-01 14:59:28 +02:00
Frontend [OpenMPIRBuilder] Implement CreateCanonicalLoop. 2020-11-09 15:03:32 -06:00
FuzzMutate Revert "Revert "[NFC][llvm] Make the contructors of `ElementCount` private."" 2020-08-19 17:26:36 +00:00
IR [NewPM] Don't run before pass instrumentation on required passes 2020-11-04 09:45:10 -08:00
InterfaceStub [llvm] Fix ODRViolations for VersionTuple YAML specializations NFC 2020-10-20 18:29:15 -07:00
LineEditor
Linker
MC [MC] Adjust StringTableBuilder for linked Mach-O binaries 2020-10-22 19:19:41 -07:00
MI LIS: fix handleMove to properly extend main range 2020-07-07 11:52:32 -07:00
Object [llvm-readobj/libObject] - Allow dumping objects that has a broken SHT_SYMTAB_SHNDX section. 2020-11-03 11:30:28 +03:00
ObjectYAML Add -Wno-error=unknown flag to clang-format. 2020-09-19 10:17:57 +02:00
Option [OptTable] Support grouped short options 2020-07-17 09:32:43 -07:00
Passes Don't export symbols from clang/opt/llc if plugins are disabled. 2020-03-23 12:17:09 -07:00
ProfileData [llvm] [unittests] Remove temporary files after they're not needed 2020-09-02 00:34:44 +03:00
Remarks [Remarks] Fix error message check in unit test 2019-10-31 15:51:36 -07:00
Support [ARM][AArch64] Adding Neoverse V1 CPU support 2020-11-09 13:15:40 +00:00
TableGen [TableGen] [tests] Change integer ranges to use new '...' punctuation 2020-10-26 10:47:29 -04:00
Target [NFCI] Replace AArch64StackOffset by StackOffset. 2020-11-04 08:49:00 +00:00
TextAPI [TextAPI] clean up auto usages in tests, NFC 2020-09-21 08:39:40 -07:00
Transforms [CodeExtractor] Replace uses of extracted bitcasts in out-of-region lifetime markers 2020-11-05 17:01:08 -08:00
XRay Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
tools [llvm] [unittests] Remove temporary files after they're not needed 2020-09-02 00:34:44 +03:00
CMakeLists.txt Reland [FileCheck] Move FileCheck implementation out of LLVMSupport into its own library 2020-09-01 14:59:28 +02:00
unittest.cfg.in