llvm-project/llvm/lib
Philip Reames de2fed6152 [unroll] Keep unrolled iterations with initial iteration
The unrolling code was previously inserting new cloned blocks at the end of the function.  The result of this with typical loop structures is that the new iterations are placed far from the initial iteration.

With unrolling, the general assumption is that the a) the loop is reasonable hot, and b) the first Count-1 copies of the loop are rarely (if ever) loop exiting.  As such, placing Count-1 copies out of line is a fairly poor code placement choice.  We'd much rather fall through into the hot (non-exiting) path.  For code with branch profiles, later layout would fix this, but this may have a positive impact on non-PGO compiled code.

However, the real motivation for this change isn't performance.  Its readability and human understanding.  Having to jump around long distances in an IR file to trace an unrolled loop structure is error prone and tedious.
2021-11-12 11:40:50 -08:00
..
Analysis [SCEV] Update SCEVLoopGuardRewriter to take SCEV -> SCEV map (NFC). 2021-11-12 18:16:03 +00:00
AsmParser Revert "[DebugInfo] Enforce implicit constraints on `distinct` MDNodes" 2021-11-09 14:27:55 -08:00
BinaryFormat [llvm][clang][NFC] updates inline licence info 2021-08-11 02:48:53 +00:00
Bitcode [DebugInfo] run clang-format on some unformatted files 2021-11-11 18:59:41 -08:00
Bitstream
CodeGen [CodeGen] Use SDNode::uses (NFC) 2021-11-12 07:33:29 -08:00
DWARFLinker Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
DWP [DWP] Refactoring llvm-dwp in to a library part 2 2021-07-22 14:23:29 -07:00
DebugInfo llvm-dwarfdump: Lookup type units when prettyprinting types 2021-11-09 16:58:22 -08:00
Demangle Fix memory leak in D demangler 2021-11-09 16:08:14 -08:00
ExecutionEngine [JITLink] Fix think-o in handwritten CWrapperFunctionResult -> Error converter. 2021-11-12 10:36:17 -08:00
Extensions
FileCheck [llvm] Use StringRef::contains (NFC) 2021-10-23 08:45:27 -07:00
Frontend Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
FuzzMutate
Fuzzer
IR [DebugInfo] run clang-format on some unformatted files 2021-11-11 18:59:41 -08:00
IRReader
InterfaceStub [llvm] Use StringRef::contains (NFC) 2021-10-23 08:45:27 -07:00
LTO [NewPM] Use the default AA pipeline by default 2021-11-04 15:10:34 -07:00
LineEditor
Linker [llvm] Use make_early_inc_range (NFC) 2021-11-05 19:39:07 -07:00
MC [llvm] Use llvm::reverse (NFC) 2021-11-06 19:31:18 -07:00
MCA [MCA] Fix a warning 2021-09-20 09:46:38 -07:00
Object Extend obj2yaml to optionally preserve raw __LINKEDIT/__DATA segments. 2021-11-08 11:30:12 -08:00
ObjectYAML Reland [XCOFF][yaml2obj] support for the auxiliary file header. 2021-11-10 07:23:56 +00:00
Option [llvm/OptTable] Add named param comment for GroupedShortOption 2021-09-27 11:33:29 -04:00
Passes [NFC] Rename GVN -> GVNPass and SROA -> SROAPass 2021-11-09 10:35:58 -08:00
ProfileData [compiler-rt] Fix diagnostic in InstrProfError 2021-11-09 20:30:03 +00:00
Remarks
Support [Support] [VirtualFileSystem] Detect the windows_slash path style 2021-11-08 22:21:29 +02:00
TableGen [Tablegen] Collect all global state into one managed static 2021-11-09 01:24:54 +00:00
Target [X86] convertShiftLeftToScale - improve vXi8 constant handling 2021-11-12 16:48:10 +00:00
Testing
TextAPI [llvm] Use drop_begin (NFC) 2021-09-16 08:46:26 -07:00
ToolDrivers [Type] Avoid APFloat.h include (NFC) 2021-10-09 11:29:26 +02:00
Transforms [unroll] Keep unrolled iterations with initial iteration 2021-11-12 11:40:50 -08:00
WindowsManifest Make WindowsManifestMerger::merge() take a MemoryBufferRef 2021-08-24 16:39:20 -04:00
XRay Support: Use Expected<T>::moveInto() in a few places 2021-10-22 12:40:10 -07:00
CMakeLists.txt [DWP] Refactoring llvm-dwp in to a library part 2 2021-07-22 14:23:29 -07:00