summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement X86TTI::getUnrollingPreferencesHal Finkel2014-04-014-10/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | This provides an initial implementation of getUnrollingPreferences for x86. getUnrollingPreferences is used by the generic (concatenation) unroller, which is distinct from the unrolling done by the loop vectorizer. Many modern x86 cores have some kind of uop cache and loop-stream detector (LSD) used to efficiently dispatch small loops, and taking full advantage of this requires unrolling small loops (small here means 10s of uops). These caches also have limits on the number of taken branches in the loop, and so we also cap the loop unrolling factor based on the maximum "depth" of the loop. This is currently calculated with a partial DFS traversal (partial because it will stop early if the path length grows too much). This is still an approximation, and one that is both conservative (because it does not account for branches eliminated via block placement) and optimistic (because it is only recording the maximum depth over minimum paths). Nevertheless, because the loops that fit in these uop caches are so small, it is not clear how much the details matter. The original set of patches posted for review produced the following test-suite performance results (from the TSVC benchmark) at that time: ControlLoops-dbl - 13% speedup ControlLoops-flt - 15% speedup Reductions-dbl - 7.5% speedup llvm-svn: 205348
* Add some additional fields to TTI::UnrollingPreferencesHal Finkel2014-04-012-4/+25
| | | | | | | | | | | | | | | | | | | In preparation for an upcoming commit implementing unrolling preferences for x86, this adds additional fields to the UnrollingPreferences structure: - PartialThreshold and PartialOptSizeThreshold - Like Threshold and OptSizeThreshold, but used when not fully unrolling. These are necessary because we need different thresholds for full unrolling from those used when partially unrolling (the full unrolling thresholds are generally going to be larger). - MaxCount - A cap on the unrolling factor when partially unrolling. This can be used by a target to prevent the unrolled loop from exceeding some resource limit independent of the loop size (such as number of branches). There should be no functionality change for any in-tree targets. llvm-svn: 205347
* Use TopTTI->getGEPCost from within getUserCostHal Finkel2014-04-011-4/+4
| | | | | | | | | | | The implementation of getUserCost had duplicated (and hard-coded) the default logic in getGEPCost. Instead, it is better to use getGEPCost directly, which limits the default logic to the implementation of one function, and allows targets to override the behavior. No functionality change intended. llvm-svn: 205346
* Use libc++ on FreeBSD as on DarwinEd Maste2014-04-011-2/+11
| | | | llvm-svn: 205345
* Move __addsf3 and __adddf3 into the corresponding blocks that defineJoerg Sonnenberger2014-04-011-2/+3
| | | | | | fp_t. llvm-svn: 205344
* [mips] Add Octeon cnMips instructions mtmX and mtpXKai Nacke2014-04-013-0/+31
| | | | | | | | | Adds the Octeon cnMips instructions "load multiplier register MPLx" and "load product register Px". Includes tests. Reviews by: Daniel.Sanders@imgtec.com llvm-svn: 205343
* Support segmented stacks on Win64Reid Kleckner2014-04-012-5/+59
| | | | | | | Identical to Win32 method except the GS segment register is used for TLS instead of FS and pvArbitrary is at TEB offset 0x28 instead of 0x14. llvm-svn: 205342
* Fix missing RUN line in testMatt Arsenault2014-04-011-0/+1
| | | | llvm-svn: 205341
* Fix self-referential comment.Richard Smith2014-04-011-2/+1
| | | | llvm-svn: 205340
* More tests for DR1.Richard Smith2014-04-011-2/+18
| | | | llvm-svn: 205339
* isTargetWindows() renamed to isTargetKnownWindowsMSVC()Yaron Keren2014-04-016-16/+16
| | | | | | | | to reflect its current functionality. Based on Takumi NAKAMURA suggestion. llvm-svn: 205338
* Implement ProcessMonitor::Kill for LinuxEd Maste2014-04-013-38/+4
| | | | | | | | | | | | | | | | | | | | | On FreeBSD ptrace(PT_KILL) is used to terminate the traced process (as if PT_CONTINUE had been used with SIGKILL as the signal to be delivered), and is the desired behaviour for ProcessPOSIX::DoDestroy. On Linux, after ptrace(PTRACE_KILL) the traced process still exists and can be interrogated. It is only upon resume that it exits as though it received SIGKILL. As the Linux PTRACE_KILL behaviour is not used by LLDB, rename BringProcessIntoLimbo to Kill, and change the implementation to simply call kill() instead of using ptrace. Thanks to Todd F for testing (Ubuntu 12.04, gcc 4.8.2). Sponsored by: DARPA, AFRL Differential Revision: http://llvm-reviews.chandlerc.com/D3159 llvm-svn: 205337
* Make isSetCCEquivalent respect the TargetBooleanContentsMatt Arsenault2014-04-012-19/+51
| | | | llvm-svn: 205336
* Add helpers for checking if a value is a target boolean constant.Matt Arsenault2014-04-012-0/+56
| | | | llvm-svn: 205335
* Add mips64 to the list of 64-bit Host architecturesEd Maste2014-04-011-0/+1
| | | | llvm-svn: 205333
* s/dyn_cast/cast/ where return value should never be null.Rui Ueyama2014-04-013-7/+8
| | | | | | | | cast<X> asserts the type is correct and does not return null on failure. So we should use cast<X> rather than dyn_cast<X> at such places where we don't expect type conversion could fail. llvm-svn: 205332
* Debug info: fix a crash when emitting IndirectFieldDecls, which wereAdrian Prantl2014-04-012-1/+18
| | | | | | | previously not handled at all. rdar://problem/16348575 llvm-svn: 205331
* mips64: clean up register context storageEd Maste2014-04-012-12/+14
| | | | | | | | | Store the gpr data in a DataBufferHeap and use a DataExtractor to extract register values with appropriate endianness. This avoids hard- coding the register count, and with some further work would allow this class to provide generic register context storage for any CPU. llvm-svn: 205329
* [analyzer] Extract a helper for finding the target region for a C++ constructor.Jordan Rose2014-04-011-56/+65
| | | | | | | | No functionality change. Patch by Alex McCarthy! llvm-svn: 205328
* [analyzer] Remove incorrect workaround for unimplemented temporary destructors.Jordan Rose2014-04-012-8/+2
| | | | | | | | | | If we're trying to get the zero element region of something that's not a region, we should be returning UnknownVal, which is what ProgramState::getLValue will do for us. Patch by Alex McCarthy! llvm-svn: 205327
* [analyzer] Fix a CFG printing bug.Jordan Rose2014-04-016-8/+514
| | | | | | | | | Also, add several destructor-related tests. Most of them don't work yet, but it's good to have them recorded. Patch by Alex McCarthy! llvm-svn: 205326
* Fixing the MSVC 2012 build bot, which cannot do initializer lists yet. ↵Aaron Ballman2014-04-011-2/+5
| | | | | | Amends r205307. llvm-svn: 205325
* DebugInfo: Factor out common functionality for rendering debug_loc and ↵David Blaikie2014-04-012-10/+17
| | | | | | | | | debug_loc.dwo location list entries In preparation for refactoring this function into two, one for debug_loc, one for debug_loc.dwo. llvm-svn: 205324
* Cleanup remaining use of removed variable to fix the buildDavid Blaikie2014-04-011-1/+1
| | | | llvm-svn: 205323
* Simplify debug_loc.dwo handling slightly.David Blaikie2014-04-013-8/+3
| | | | llvm-svn: 205322
* InstrProfile: Use SANITIZER_COMMON_LIT_TEST_DEPSDuncan P. N. Exon Smith2014-04-011-2/+2
| | | | | | | | Take advantage of the SANITIZER_COMMON_LIT_TEST_DEPS variable. <rdar://problem/16458307> llvm-svn: 205321
* Delete trivial PHI nodes (aka stack slot sharing)Tobias Grosser2014-04-013-18/+189
| | | | | | | | | | | | | | During code preperation trivial PHI nodes (mainly introduced by lcssa) are deleted to decrease the number of introduced allocas (==> dependences). However simply replacing them by their only incoming value would cause the independent block pass to introduce new allocas. To prevent this we try to share stack slots during code preperarion, hence to reuse a already created alloca 'to demote' the trivial PHI node. This works if we know that the value stored in this alloca will be the incoming value of the trivial PHI at the end of the predecessor block of this trivial PHI. Contributed-by: Johannes Doerfert <doerfert@cs.uni-saarland.de> llvm-svn: 205320
* InstrProf: Turn on test for LinuxDuncan P. N. Exon Smith2014-04-011-2/+1
| | | | | | | | | Enabling test/profile on Linux to get feedback from the buildbots. I'm hoping this just works... <rdar://problem/16458307> llvm-svn: 205319
* InstrProf: Remove LTO dependency from testDuncan P. N. Exon Smith2014-04-011-1/+1
| | | | | | | | | The -flto flag relies on linker features that are not available on all platforms. <rdar://problem/16458307> llvm-svn: 205318
* ARM: rename ARMle/ARMbe with ARMLE/ARMBE, and Thumble/Thumbbe with ↵Christian Pirker2014-04-0110-114/+114
| | | | | | ThumbLE/ThumbBE llvm-svn: 205317
* [tsan] Remove an accidentally committed debug print.Alexander Potapenko2014-04-011-1/+0
| | | | llvm-svn: 205316
* Implement ProcessMonitor::Kill for FreeBSDEd Maste2014-04-013-9/+9
| | | | | | | | | | | | | | | | | On FreeBSD ptrace(PT_KILL) is used to terminate the traced process (as if PT_CONTINUE had been used with SIGKILL as the signal to be delivered), and is the desired behaviour for ProcessPOSIX::DoDestroy. On Linux, after ptrace(PTRACE_KILL) the traced process still exists and can be interrogated. It is only upon resume that it exits as though it received SIGKILL. For now I'm committing only the FreeBSD change, until the Linux change (review D3159) is successfully tested. http://llvm.org/pr18894 llvm-svn: 205315
* ARM: teach LLVM that Cortex-A7 is very similar to A8.Tim Northover2014-04-013-9/+11
| | | | llvm-svn: 205314
* Attempting to fix r205124, which had failed asserts when built with MSVC.Aaron Ballman2014-04-011-1/+1
| | | | | | Suggestion from Yaron Keren. llvm-svn: 205313
* Add support for IEEE754 quad precision comparison functions.Joerg Sonnenberger2014-04-019-0/+955
| | | | | | | | From GuanHong Liu. Differential Revision: http://llvm-reviews.chandlerc.com/D2797 llvm-svn: 205312
* [ASan] Fix Android buildAlexey Samsonov2014-04-011-0/+2
| | | | llvm-svn: 205311
* Add support for dynamic ASan runtime (on Linux) to Clang driver.Alexey Samsonov2014-04-015-26/+90
| | | | | | Based on http://llvm-reviews.chandlerc.com/D3043 by Yuri Gribov! llvm-svn: 205310
* ARM: add cyclone CPU with ZeroCycleZeroing feature.Tim Northover2014-04-016-6/+115
| | | | | | | | The Cyclone CPU is similar to swift for most LLVM purposes, but does have two preferred instructions for zeroing a VFP register. This teaches LLVM about them. llvm-svn: 205309
* [ASan] Optional support for dynamic ASan runtime on Linux.Alexey Samsonov2014-04-0123-24/+345
| | | | | | Based on http://llvm-reviews.chandlerc.com/D3042 by Yuri Gribov! llvm-svn: 205308
* clang-format: Support configurable list of foreach-macros.Daniel Jasper2014-04-017-9/+79
| | | | | | | | This fixes llvm.org/PR17242. Patch by Brian Green, thank you! llvm-svn: 205307
* Add errno import missed in r205246Ed Maste2014-04-011-0/+1
| | | | llvm-svn: 205306
* [mips] Renamed ParseAnyRegisterWithoutDollar to MatchAnyRegisterWithoutDollarDaniel Sanders2014-04-011-8/+14
| | | | | | | | | This is for consistency with other functions. The Parse* functions consume tokens and the Match* functions don't. No functional change. llvm-svn: 205305
* Fixing an MSVC warning about widening the result of a 32-bit shift ↵Aaron Ballman2014-04-011-1/+1
| | | | | | implicitly. No functional change intended. llvm-svn: 205304
* ARM64: add a few bits of polynomial intrinsic codegen.Tim Northover2014-04-013-33/+73
| | | | llvm-svn: 205303
* ARM64: add intrinsic for pmull (p64 x p64 = p128) operations.Tim Northover2014-04-013-2/+31
| | | | llvm-svn: 205302
* Fixing warnings in the MSVC build. No functional changes intended.Aaron Ballman2014-04-015-42/+42
| | | | llvm-svn: 205301
* [TSan] Make this test more portableAlexey Samsonov2014-04-011-2/+2
| | | | llvm-svn: 205300
* [sanitizer] one more stress test for the deadlock detector; this one ↵Kostya Serebryany2014-04-011-4/+29
| | | | | | stresses the slow path with a global lock llvm-svn: 205299
* [mips] Extend ParseJumpTarget to support the full symbol expression syntax.Daniel Sanders2014-04-012-27/+20
| | | | | | | | | | | | | | | | Summary: This should fix the issues the D3222 caused in lld. Testcase is based on the one that failed in the buildbot. Depends on D3233 Reviewers: matheusalmeida, vmedic Reviewed By: matheusalmeida Differential Revision: http://llvm-reviews.chandlerc.com/D3234 llvm-svn: 205298
* [mips] Use AsmLexer::peekTok() to resolve the conflict between $reg and $symDaniel Sanders2014-04-011-15/+10
| | | | | | | | | | | | | | | Summary: Parsing registers no longer consume the $ token before it's confirmed whether it really has a register or not, therefore it's no longer impossible to match symbols if registers were tried first. Depends on D3232 Reviewers: matheusalmeida, vmedic Reviewed By: matheusalmeida Differential Revision: http://llvm-reviews.chandlerc.com/D3233 llvm-svn: 205297
OpenPOWER on IntegriCloud