llvm-6502/lib
Hal Finkel df60e43e05 [X86TTI] Remove the unrolling branch limits
The loop stream detector (LSD) on modern Intel cores, which optimizes the
execution of small loops, has limits on the number of taken branches in
addition to uop-count limits (modern AMD cores have similar limits).
Unfortunately, at the IR level, estimating the number of branches that will be
taken is difficult. For one thing, it strongly depends on later passes (block
placement, etc.). The original implementation took a conservative approach and
limited the maximal BB DFS depth of the loop.  However, fairly-extensive
benchmarking by several of us has revealed that this is the wrong approach. In
fact, there are zero known cases where the branch limit prevents a detrimental
unrolling (but plenty of cases where it does prevent beneficial unrolling).

While we could improve the current branch counting logic by incorporating
branch probabilities, this further complication seems unjustified without a
motivating regression. Instead, unless and until a regression appears, the
branch counting will be removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208255 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-07 22:25:18 +00:00
..
Analysis avoid segfaulting 2014-05-07 19:00:37 +00:00
AsmParser Add 'musttail' marker to call instructions 2014-04-24 20:14:34 +00:00
Bitcode [IR] Make {extract,insert}element accept an index of any integer type. 2014-05-01 22:12:39 +00:00
CodeGen Fix using wrong result type for setcc. 2014-05-07 18:26:58 +00:00
DebugInfo [DWARF parser] Cleanup code in DWARFDebugLine. 2014-04-30 00:09:19 +00:00
ExecutionEngine [ARM64] Try and make the ELF MCJIT *slightly* less broken for ARM64. 2014-04-30 10:15:41 +00:00
IR llvm-cov: Explicitly namespace llvm::make_unique to keep MSVC happy 2014-05-07 16:01:27 +00:00
IRReader [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 06:32:26 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker Be more strict about not calling setAlignment on global aliases. 2014-05-06 14:51:36 +00:00
LTO Use a range loop. 2014-05-05 20:06:41 +00:00
MC Remove the UseCFI option from createAsmStreamer. 2014-05-07 13:00:43 +00:00
Object [yaml2obj] Support ELF x86 relocations. 2014-05-07 17:06:38 +00:00
Option Protect the ArgList dtor 2014-04-20 23:59:00 +00:00
ProfileData Fixing a cast-qual warning. getBufferStart() and getBufferEnd() both return a const char *, so casting to non-const was triggering a warning (even though the assignment and usage was always const anyway). 2014-05-01 17:16:24 +00:00
Support [Support/MemoryBuffer] Remove the assertion that the file size did not shrink. 2014-05-06 23:30:56 +00:00
TableGen [tablegen] Add !listconcat operator with the similar semantics as !strconcat 2014-05-07 10:13:19 +00:00
Target [X86TTI] Remove the unrolling branch limits 2014-05-07 22:25:18 +00:00
Transforms Tidy up whitespace with clang-format prior to making significant 2014-05-07 17:36:59 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00