llvm-6502/include/llvm/Support
Chandler Carruth 424b2b0093 [vectorizer] Teach the loop vectorizer's unroller to only unroll by
powers of two. This is essentially always the correct thing given the
impact on alignment, scaling factors that can be used in addressing
modes, etc. Also, fix the management of the unroll vs. small loop cost
to more accurately model things with this world.

Enhance a test case to actually exercise more of the unroll machinery if
using synthetic constants rather than a specific target model. Before
this change, with the added flags this test will unroll 3 times instead
of either 2 or 4 (the two sensible answers).

While I don't expect this to make a huge difference, if there are lots
of loops sitting right on the edge of hitting the 'small unroll' factor,
they might change behavior. However, I've benchmarked moving the small
loop cost up and down in many various ways and by a huge factor (2x)
without seeing more than 0.2% code size growth. Small adjustments such
as the series that led up here have led to about 1% improvement on some
benchmarks, but it is very close to the noise floor so I mostly checked
that nothing regressed. Let me know if you see bad behavior on other
targets but I don't expect this to be a sufficiently dramatic change to
trigger anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200213 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-27 11:12:24 +00:00
..
AIXDataTypesFix.h
AlignOf.h Extend llvm::AlignedCharArrayUnion to support up to 10 arguments, as required by Clang's APValue. 2014-01-09 03:28:55 +00:00
Allocator.h [BumpPtrAllocator] Move DefaultSlabAllocator to a member of BumpPtrAllocator, instead of a static variable. 2013-08-28 01:02:21 +00:00
ARMBuildAttributes.h [ARM] Do not generate Tag_DIV_use=AllowDIVExt when hardware div is non-optional: it should have the default value of AllowDIVIfExists 2014-01-20 10:18:42 +00:00
ARMEHABI.h Support: add reference for ARM EHABI 2014-01-06 04:14:03 +00:00
ArrayRecycler.h
Atomic.h
BlockFrequency.h [block-freq] Add a right shift to BlockFrequency that saturates at 1. 2013-12-14 02:24:22 +00:00
BranchProbability.h
CallSite.h Begin adding docs and IR-level support for the inalloca attribute 2013-12-19 02:14:12 +00:00
Capacity.h
Casting.h Add unused result attr to the casting templates 2014-01-22 07:28:49 +00:00
CBindingWrapping.h
CFG.h Correct word hyphenations 2013-12-05 05:44:44 +00:00
circular_raw_ostream.h
CodeGen.h
COFF.h Rename IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA. 2014-01-27 04:22:24 +00:00
CommandLine.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
Compiler.h Add a LLVM_DUMP_METHOD macro. 2014-01-03 22:53:37 +00:00
Compression.h Fix known typos 2014-01-24 17:20:08 +00:00
ConstantFolder.h
ConstantRange.h Use move semantics if possible to construct ConstantRanges. 2013-07-11 15:37:27 +00:00
ConvertUTF.h [Support] Add a Unicode conversion wrapper from UTF16 to UTF8 2013-07-16 17:14:33 +00:00
CrashRecoveryContext.h
DataExtractor.h
DataFlow.h
DataStream.h
DataTypes.h.cmake Remove dead or useless header checks from cmake and autoconf 2013-07-26 16:54:23 +00:00
DataTypes.h.in Remove dead or useless header checks from cmake and autoconf 2013-07-26 16:54:23 +00:00
Debug.h Include raw_ostream.h. 2013-11-15 01:25:34 +00:00
DebugLoc.h DebugLoc defines LineCol as 32 bit in comment but unsigned in code. 2013-11-17 09:47:39 +00:00
Disassembler.h
DOTGraphTraits.h
Dwarf.h Pull in a couple of new constants from the upcoming DWARF 5 standard. 2013-12-18 21:48:14 +00:00
DynamicLibrary.h
ELF.h Implement the missing bits corresponding to .mips_hack_elf_flags. 2014-01-26 06:57:13 +00:00
Endian.h
Errno.h
ErrorHandling.h Roll back the ConstStringRef change for now 2014-01-27 05:24:39 +00:00
ErrorOr.h Use LLVM_EXPLICIT instead of a function pointer as bool. 2014-01-16 23:37:23 +00:00
FEnv.h
FileOutputBuffer.h
FileSystem.h Remove remove_all. A compiler has no need for recursively deleting a directory. 2014-01-10 20:36:42 +00:00
FileUtilities.h Use the simpler version of sys::fs::remove when possible. 2014-01-10 21:40:29 +00:00
Format.h
FormattedStream.h Forward resetColor() et al to the underlying stream. 2013-08-08 00:43:30 +00:00
GCOV.h llvm-cov: Added -f option for function summaries. 2013-12-19 00:29:25 +00:00
GenericDomTree.h [PM] Split DominatorTree into a concrete analysis result object which 2014-01-13 13:07:17 +00:00
GenericDomTreeConstruction.h [PM] Pull the generic graph algorithms and data structures for dominator 2014-01-13 10:52:56 +00:00
GetElementPtrTypeIterator.h
GraphWriter.h Convert a use of sys::Path::GetTemporaryDirectory. 2013-06-14 16:43:15 +00:00
Host.h Return a StringRef from getHostCPUName. 2013-12-12 15:45:32 +00:00
IncludeFile.h
InstIterator.h
LeakDetector.h
LEB128.h Formatting. 2013-08-01 01:38:16 +00:00
LICENSE.TXT
LineIterator.h Introduce a simple line-by-line iterator type into the Support library. 2013-12-27 04:28:57 +00:00
Locale.h
LockFileManager.h
MachO.h Remove support for armv7f slice. <rdar://problem/12478440> 2014-01-15 21:44:14 +00:00
ManagedStatic.h Make PrettyStackTraceEntry use ManagedStatic for its ThreadLocal. 2013-09-13 22:59:47 +00:00
MathExtras.h [vectorizer] Teach the loop vectorizer's unroller to only unroll by 2014-01-27 11:12:24 +00:00
MD5.h
Memory.h Fix known typos 2014-01-24 17:20:08 +00:00
MemoryBuffer.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
MemoryObject.h
Mutex.h
MutexGuard.h
NoFolder.h
OutputBuffer.h
PassNameParser.h Provide basic type safety for array_pod_sort comparators. 2013-09-22 14:09:50 +00:00
Path.h Path: Add an in-place version of path::native. 2013-09-11 10:45:21 +00:00
PatternMatch.h Add support to the pattern match library for matching NSW and NUW 2014-01-05 03:28:29 +00:00
PluginLoader.h
PointerLikeTypeTraits.h
PredIteratorCache.h
PrettyStackTrace.h Make the pretty stack trace be an opt-in, rather than opt-out, facility. Enable pretty 2013-11-04 02:22:25 +00:00
Process.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
Program.h Support: Update documentation for Program functions 2013-12-10 16:31:09 +00:00
raw_os_ostream.h
raw_ostream.h Add a wrapper for open. 2013-07-16 19:44:17 +00:00
Recycler.h
RecyclingAllocator.h Add an assertion to the fixed-size allocator to ensure that we don't request 2013-08-27 11:20:13 +00:00
Regex.h Make llvm::Regex non-copyable but movable. 2014-01-02 19:04:59 +00:00
Registry.h [Support/Registry.h] Include llvm/Support/Compiler.h. 2013-06-27 17:57:40 +00:00
RegistryParser.h
RWMutex.h
SaveAndRestore.h
Signals.h Don't use PathV1.h in Signals.h. 2013-06-13 21:16:58 +00:00
SMLoc.h
Solaris.h
SourceMgr.h Make SourceMgr::PrintMessage() testable and add unit tests 2013-09-27 21:09:25 +00:00
StreamableMemoryObject.h
StringPool.h
StringRefMemoryObject.h
SwapByteOrder.h
system_error.h
SystemUtils.h Move PrependMainExecutablePath next to its only user. 2013-06-14 15:12:13 +00:00
TargetFolder.h
TargetRegistry.h Pass a MCSubtargetInfo down to the TargetStreamer creation. 2014-01-26 06:38:58 +00:00
TargetSelect.h
Threading.h
ThreadLocal.h
Timer.h
TimeValue.h Fix TimeValue::toWin32Time() to be symmetric to fromWin32Time() and compatible to Win32's FILETIME. 2013-07-16 02:43:51 +00:00
ToolOutputFile.h Add a wrapper for open. 2013-07-16 19:44:17 +00:00
type_traits.h
Unicode.h Move generic isPrint and columnWidth implementations to a separate header/source to allow using both generic and system-dependent versions on win32. 2013-09-04 16:00:12 +00:00
UnicodeCharRanges.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
Valgrind.h Fix include guards. 2013-08-20 22:52:02 +00:00
ValueHandle.h [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
Watchdog.h
Win64EH.h
YAMLParser.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
YAMLTraits.h Suppress an annoying "unused variable" warning caused by bug 17897. 2014-01-23 19:01:25 +00:00