summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [clang-tidy] Fix misc-unused-using-decls false positives in presence of ↵Alexander Kornienko2017-02-092-0/+15
| | | | | | compile errors llvm-svn: 294578
* [ELF] Use synthetic section to hold copy relocationPeter Smith2017-02-095-27/+45
| | | | | | | | | | | | | | When we need a copy relocation we create a synthetic SHT_NOBITS section that contains the right amount of ZI and assign it to either .bss or .rel.ro.bss as appropriate. This allows the dynamic relocation to be placed on the InputSection, removing the last case where a dynamic relocation is stored as an offset from the OutputSection. This has the side effect that we can run assignOffsets() after scanRelocs() without losing the additional ZI needed for the copy relocations. Differential Revision: https://reviews.llvm.org/D29637 llvm-svn: 294577
* [ScopInfo] Expect the OriginalBaseAddr when looking at underlying ↵Tobias Grosser2017-02-091-3/+3
| | | | | | | | | | | | | | | | instructions [NFC] During SCoP construction we sometimes inspect the underlying IR by looking at the base address of a MemoryAccess. In such cases, we always want the original base address. Make this clear by calling getOriginalBaseAddr(). This is a non-functional change as getBaseAddr maps to getOriginalBaseAddr at the moment. This change removes unnecessary uses of MemoryAddress::getBaseAddr() in preparation for https://reviews.llvm.org/D28518. llvm-svn: 294576
* [ScopInfo] Remove unnecessary indirection through SCEV [NFC]Tobias Grosser2017-02-091-8/+4
| | | | | | | | | The base address of a memory access is already an llvm::Value. Hence, there is no need to go through SCEV, but we can directly work with the llvm::Value. Also use 'Value *' instead of 'auto' for cases where the type is not obvious. llvm-svn: 294575
* [IRBuilder] Extract base pointers directly from ScopArrayTobias Grosser2017-02-092-16/+10
| | | | | | | | | | | | | Instead of iterating over statements and their memory accesses to extract the set of available base pointers, just directly iterate over all ScopArray objects. This reflects more the actual intend of the code: collect all arrays (and their base pointers) to emit alias information that specifies that accesses to different arrays cannot alias. This change removes unnecessary uses of MemoryAddress::getBaseAddr() in preparation for https://reviews.llvm.org/D28518. llvm-svn: 294574
* Threading support: externalize sleep_for() function.Asiri Rathnayake2017-02-092-28/+37
| | | | | | | | | | Different platforms implement the wait/sleep functions in difrerent ways. It makes sense to externalize this into the threading API. Differential revision: https://reviews.llvm.org/D29630 Reviewers: EricWF, joerg llvm-svn: 294573
* LVI: Fix use-of-uninitialized-value after r294463Vitaly Buka2017-02-091-1/+1
| | | | | | BlockValueStack can be reallocated making reference e invalid. llvm-svn: 294572
* [FIX] Disable the problematic run linesRoman Gareev2017-02-092-19/+19
| | | | | | | | There are problems with using the machine information to derive the precise vector size on polly-amd64-linux and polly-arm-linux. We temporarily disable the problematic run lines. llvm-svn: 294571
* [clang-format] Fix typo in comment.Krasimir Georgiev2017-02-091-1/+1
| | | | llvm-svn: 294570
* [FIX] Specify the CPU to overwrite the machine info and set a fixed vectorRoman Gareev2017-02-092-2/+3
| | | | | | size. llvm-svn: 294569
* [IslAst] Print the ScopArray name to mark reductionsTobias Grosser2017-02-096-9/+9
| | | | | | | | | | | | | Before this change we used the name of the base pointer to mark reductions. This is imprecise as the canonical reference is the ScopArray itself and not the basepointer of a reduction. Using the base pointer of reductions is problematic in cases where a single ScopArray is referenced through two different base pointers. This change removes unnecessary uses of MemoryAddress::getBaseAddr() in preparation for https://reviews.llvm.org/D28518. llvm-svn: 294568
* [DependenceInfo] Use ScopArrayInfo to keep track of arrays [NFC]Tobias Grosser2017-02-091-4/+4
| | | | | | | | | | | | | | When computing reduction dependences we first identify all ScopArrays which are part of reductions and then only compute for these ScopArrays the more detailed data dependences that allow us to identify reductions and optimize across them. Instead of using the base pointer as identifier of a ScopArray, it is clearer and more understandable to directly use the ScopArray as identifier. This change implements such a switch. This change removes unnecessary uses of MemoryAddress::getBaseAddr() in preparation for https://reviews.llvm.org/D28518. llvm-svn: 294567
* [BlockGenerator] BBMap uses original BaseAddress for scalar loads [NFC]Tobias Grosser2017-02-091-2/+2
| | | | | | | | | | | | | | | | | When regenerating code in the BlockGenerator we copy instructions that may references scalar values, for which the new value of a given scalar is looked up in BBMap using the original scalar llvm::Value as index. It is consequently necessary that (re)loaded scalar values are made available in BBMap using the original llvm::Value as key independently if the llvm::Value was (re)loaded from the original scalar or a new access function has been specified that caused the value to be reloaded from an array with a differnet base address. We make this clear by using MemoryAccess::getOriginalBaseAddr() instead of MemoryAccess::getBaseAddr() as index to BBMap. This change removes unnecessary uses of MemoryAddress::getBaseAddr() in preparation for https://reviews.llvm.org/D28518. llvm-svn: 294566
* Add new tests for EXTRACT_VECTOR_ELT (vector of packed i8/16/i32/i64/ps/pd data)Igor Breger2017-02-091-1/+427
| | | | llvm-svn: 294565
* Isolate a set of partial tile prefixes in case of the matrix multiplicationRoman Gareev2017-02-093-6/+427
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | optimization Isolate a set of partial tile prefixes to allow hoisting and sinking out of the unrolled innermost loops produced by the optimization of the matrix multiplication. In case it cannot be proved that the number of loop iterations can be evenly divided by tile sizes and we tile and unroll the point loop, the isl generates conditional expressions. Subsequently, the conditional expressions can prevent stores and loads of the unrolled loops from being sunk and hoisted. The patch isolates a set of partial tile prefixes, which have exactly Mr x Nr iterations of the two innermost loops, the result of the loop tiling performed by the matrix multiplication optimization, where Mr and Mr are parameters of the micro-kernel. This helps to get rid of the conditional expressions of the unrolled innermost loops. Probably this approach can be replaced with padding in future. In case of, for example, the gemm from Polybench/C 3.2 and parametric loop bounds, it helps to increase the performance from 7.98 GFlops (27.71% of theoretical peak) to 21.47 GFlops (74.57% of theoretical peak). Hence, we get the same performance as in case of scalar loops bounds. It also cause compile time regression. The compile-time is increased from 0.795 seconds to 0.837 seconds in case of scalar loops bounds and from 1.222 seconds to 1.490 seconds in case of parametric loops bounds. Reviewed-by: Michael Kruse <llvm@meinersbur.de> Differential Revision: https://reviews.llvm.org/D29244 llvm-svn: 294564
* [XRAY] [compiler-rt] [NFC] Fixing the bit twiddling of Function Id in FDR ↵Dean Michael Berris2017-02-091-1/+1
| | | | | | | | | | | | | | | | | | | logging mode. Summary: Fixing a bug I found when testing a reader for the FDR format. Function ID is now correctly packed into the 28 bits which are documented for it instead of being masked to all ones. Reviewers: dberris, pelikan, eugenis Reviewed By: dberris Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29698 llvm-svn: 294563
* [X86] Remove the HLE feature flag.Craig Topper2017-02-096-16/+5
| | | | | | We only implemented it for one of the 3 HLE instructions and that instruction is also under the RTM flag. Clang only implements the RTM flag from its command line. llvm-svn: 294562
* [X86] Remove INVPCID and SMAP feature flags. They aren't currently used by ↵Craig Topper2017-02-093-16/+1
| | | | | | | | any instructions and not tested. If we implement intrinsics for their instructions in the future, the feature flags can be added back with proper testing. llvm-svn: 294561
* [X86] Fix copy and paste bug in clzero test from r294559.Craig Topper2017-02-091-1/+1
| | | | llvm-svn: 294560
* [X86] Clzero flag addition and inclusion under znver1Craig Topper2017-02-0912-3/+88
| | | | | | | | | | | | | 1. Adds the command line flag for clzero. 2. Includes the clzero flag under znver1. 3. Defines the macro for clzero. 4. Adds a new file which has the intrinsic definition for clzero instruction. Patch by Ganesh Gopalasubramanian with some additional tests from me. Differential revision: https://reviews.llvm.org/D29386 llvm-svn: 294559
* [X86] Clzero intrinsic and its addition under znver1Craig Topper2017-02-0912-2/+101
| | | | | | | | | | | | | | | | | This patch does the following. 1. Adds an Intrinsic int_x86_clzero which works with __builtin_ia32_clzero 2. Identifies clzero feature using cpuid info. (Function:8000_0008, Checks if EBX[0]=1) 3. Adds the clzero feature under znver1 architecture. 4. The custom inserter is added in Lowering. 5. A testcase is added to check the intrinsic. 6. The clzero instruction is added to assembler test. Patch by Ganesh Gopalasubramanian with a couple formatting tweaks, a disassembler test, and using update_llc_test.py from me. Differential revision: https://reviews.llvm.org/D29385 llvm-svn: 294558
* Object: pad BSD ar string table to 4-bytesSaleem Abdulrasool2017-02-091-0/+4
| | | | | | | | | cctools would pad the string table to a sizeof(int32_t) (explicitly printed out by cctools rather than 4). This adjusts the string table to make it more compatible with cctools, but is insufficient to make ld64 happy. llvm-svn: 294557
* Revert "[libunwind][CMake] Use libc++ headers when available"Petr Hosek2017-02-091-19/+0
| | | | | | | | This is causing build failure when building libc++abi with libunwind. This reverts commit 42bf29501dfa79f211841de060386d539933e811. llvm-svn: 294556
* [GlobalISel] Simplify StringRef parameters. NFC.Ahmed Bougacha2017-02-091-9/+8
| | | | | | 'const' on StringRef parameters adds no guarantees. Remove it. llvm-svn: 294555
* [libunwind][CMake] Use libc++ headers when availablePetr Hosek2017-02-091-0/+19
| | | | | | | | | libunwind depends on C++ library headers. When building libunwind as part of LLVM and libc++ is available, use its headers. Differential Revision: https://reviews.llvm.org/D29573 llvm-svn: 294554
* [libcxx][CMake] Support in-tree libunwind when building as part of runtimesPetr Hosek2017-02-092-2/+3
| | | | | | | | | | | When building as part of runtimes, there is no predefined order in which the runtimes are loaded, so the targets from other projects might not be available. We need to rely on HAVE_<name> variables instead in that case. Differential Revision: https://reviews.llvm.org/D29575 llvm-svn: 294553
* [libcxxabi][CMake] Support in-tree libunwind when building as part of runtimesPetr Hosek2017-02-092-2/+3
| | | | | | | | | | | When building as part of runtimes, there is no predefined order in which the runtimes are loaded, so the targets from other projects might not be available. We need to rely on HAVE_<name> variables instead in that case. Differential Revision: https://reviews.llvm.org/D29574 llvm-svn: 294552
* SwiftCC: swifterror register cannot be as the base registerArnold Schwaighofer2017-02-094-179/+179
| | | | | | | | | | | | | Functions that have a dynamic alloca require a base register which is defined to be X19 on AArch64 and r6 on ARM. We have defined the swifterror register to be the same register. Use a different callee save register for swifterror instead: X21 on AArch64 R8 on ARM rdar://30433803 llvm-svn: 294551
* LowerTypeTests: Change a few vtable globals in tests to constants.Peter Collingbourne2017-02-097-14/+14
| | | | | | | | | It turns out that some of our negative tests were not in fact providing the test coverage we expected: they were passing because the vtables were failing an early check that they were constant. Fix this by changing the globals in these tests to constants. llvm-svn: 294550
* [cmake] add missing dependency lldbCommands->lldbBasePavel Labath2017-02-091-0/+1
| | | | | | | | | | CommandObjectVersion.cpp calls lldb_private::GetVersion (present in lldbBase). This should fix the unittest link on windows. I am not sure why is this not present on other platforms -- my guess is that there lldbBase is included in the link through some other dependency chain. llvm-svn: 294549
* [MC] Fix some Clang-tidy modernize and Include What You Use warnings in ↵Eugene Zelenko2017-02-099-99/+148
| | | | | | | | SubtargetFeature; other minor fixes (NFC). Same changes in files affected by reduced SubtargetFeature.h dependencies. llvm-svn: 294548
* Add check that "#define unix 1" is present for the PS4 target.Douglas Yung2017-02-091-0/+1
| | | | llvm-svn: 294534
* [sancov] sanitizer coverage initialization testMike Aizatsky2017-02-091-0/+73
| | | | | | | | | | Summary: Reflects the change in https://reviews.llvm.org/D29662 Subscribers: kubamracek Differential Revision: https://reviews.llvm.org/D29721 llvm-svn: 294533
* Reapply r294356 ("Keep track of spilled variables in LiveDebugValues").Wolfgang Pieb2017-02-082-9/+609
| | | | | | | Was reverted with r294447 due to undefined behavior with negative offsets in DBG_VALUE instructions. llvm-svn: 294532
* GlobalISel: legalize G_FPOW to a libcall on AArch64.Tim Northover2017-02-083-5/+51
| | | | | | There's no instruction to implement it. llvm-svn: 294531
* GlobalISel: translate @llvm.pow intrinsic to G_FPOW.Tim Northover2017-02-084-0/+27
| | | | | | | | It'll usually be immediately legalized back to a libcall, but occasionally something can be done with it so we'd just as well enable that flexibility from the start. llvm-svn: 294530
* [sancov] using comdat only when it is enabledMike Aizatsky2017-02-084-16/+91
| | | | | | Differential Revision: https://reviews.llvm.org/D29733 llvm-svn: 294529
* [ARM/AArch ISel] SwiftCC: First parameters that are marked swiftself are not ↵Arnold Schwaighofer2017-02-084-2/+39
| | | | | | | | | | | | | | | | | | | 'this returns' We mark X0 as preserved by a call that passes the returned parameter. x0 = ... fun(x0) // no implicit def of x0 This no longer is valid if we pass the parameter in a different register then the returned value as is the case with a swiftself parameter (passed in x20). x20 = ... fun(x20) // there should be an implict def of x8 rdar://30425845 llvm-svn: 294527
* [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other ↵Eugene Zelenko2017-02-0820-138/+142
| | | | | | minor fixes (NFC). llvm-svn: 294526
* [ARM] Fix some Include What You Use warnings; other minor fixes (NFC).Eugene Zelenko2017-02-081-6/+7
| | | | | | This is preparation to reduce MC headers dependencies. llvm-svn: 294525
* [InstCombine] add tests to show information-losing add nsw/nuw transforms; NFCSanjay Patel2017-02-083-14/+63
| | | | llvm-svn: 294524
* Revert r294437 as it broke an asan buildbot.Amara Emerson2017-02-0824-253/+248
| | | | llvm-svn: 294523
* [sancov] pc_guard_init is called at least once per DSO.Mike Aizatsky2017-02-081-4/+5
| | | | | | | | Summary: Documentation update for https://reviews.llvm.org/D29662 Differential Revision: https://reviews.llvm.org/D29722 llvm-svn: 294522
* [CMake] Add dependency on Mips target if it is availableChris Bieneman2017-02-082-0/+10
| | | | | | | | | | The Mips plugins conditionally link the Mips backend, so we need to conditionally add the target as a dependency. This resolves a bot failure from r294515. http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-buildserver/builds/4606/steps/build%20android/logs/stdio llvm-svn: 294521
* GlobalISel: select G_[SU]MULH on AArch64.Tim Northover2017-02-082-0/+58
| | | | | | | Hopefully this'll be nuked by tablegen pretty soon, but until then it's reasonably important for supporting C++ operator new[]. llvm-svn: 294520
* GlobalISel: expand mul-with-overflow into mul-hi on AArch64.Tim Northover2017-02-085-1/+77
| | | | | | | | AArch64 has specific instructions to multiply two numbers at double the width and produce the high part of the result. These can be used to implement LLVM's mul.with.overflow instructions fairly simply. Helps with C++ operator new[]. llvm-svn: 294519
* [AMDGPU] Implement register pressure callbacksStanislav Mekhanoshin2017-02-082-0/+37
| | | | | | | | | | | | | | | | | | | Implement getRegPressureLimit and getRegPressureSetLimit callbacks in SIRegisterInfo. This makes standard converge scheduler to behave almost the same as GCNScheduler, sometime slightly better sometimes a bit worse. In gerenal that is also possible to switch GCNScheduler to use these callbacks instead of getMaxWaves(), which also makes GCNScheduler slightly better on some tests and slightly worse on another. A big win is behavior with converge scheduler. Note, these are used not only by scheduling, but in places like MachineLICM. Differential Revision: https://reviews.llvm.org/D29700 llvm-svn: 294518
* [sancov] specifying comdat for sancov constructorsMike Aizatsky2017-02-082-2/+16
| | | | | | Differential Revision: https://reviews.llvm.org/D29662 llvm-svn: 294517
* Take code ownership of LLVM bitcode.Peter Collingbourne2017-02-081-5/+1
| | | | llvm-svn: 294516
* [CMake] Final dependency cleanup patch!Chris Bieneman2017-02-089-335/+38
| | | | | | | | | | | | | | | | | Summary: This patch removes the over-specified dependencies from LLDBDependencies and instead relies on the dependencies as expressed in each library and tool. This also removes the library looping in favor of allowing CMake to do its thing. I've tested this patch on Darwin, and found no issues, but since linker semantics vary by system I'll also work on testing it on other platforms too. Help testing would be greatly appreciated. Reviewers: labath, zturner Subscribers: danalbert, srhines, mgorny, jgosnell, lldb-commits Differential Revision: https://reviews.llvm.org/D29352 llvm-svn: 294515
OpenPOWER on IntegriCloud