summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* [AVX-512] Use update_llc_test_checks.py to regenerate a test.Craig Topper2017-02-261-44/+53
| | | | llvm-svn: 296287
* [AVX-512] Fix the execution domain for VSCALEF instructions.Craig Topper2017-02-261-0/+4
| | | | llvm-svn: 296286
* [AVX-512] Fix execution domain of scalar VRANGE/REDUCE/GETMANT with sae.Craig Topper2017-02-261-0/+1
| | | | llvm-svn: 296285
* [X86] Fix the execution domain for scalar SQRT intrinsic instruction.Craig Topper2017-02-263-7/+7
| | | | llvm-svn: 296284
* [X86] Add an additional CHECK prefix to a test. Some of the cases used it, ↵Craig Topper2017-02-261-12/+7
| | | | | | but it wasn't on the FileCheck command lines. llvm-svn: 296283
* [SCCP] Remove manual folding of terminator instructions.Xin Tong2017-02-261-26/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: BranchInst, SwitchInst (with non-default case) with Undef as input is not possible at this point. As we always default-fold terminator to one target in ResolvedUndefsIn and set the input accordingly. So we should only have constantint/blockaddress here. If ConstantFoldTerminator fails, that could mean 2 things. 1. ConstantFoldTerminator is doing something unexpected, i.e. not folding on constantint or blockaddress and not making blocks that should be dead dead. 2. This is not a terminator on constantint or blockaddress. Its on a constant or overdefined, then this block should not be dead. In both cases, we should assert. Reviewers: davide, efriedma, sanjoy Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30381 llvm-svn: 296281
* [X86] Clean up test/CodeGen/X86/2006-03-02-InstrSchedBug.llDavid L. Jones2017-02-261-8/+9
| | | | | | | | | | | | | | | Summary: Migrated from grep to FileCheck. Re-indented code, removed boilerplate comments. Added 'entry' label at beginning of basic block. Patch by Jorge Gorbe! Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30320 llvm-svn: 296280
* Revert "In visitSTORE, always use FindBetterChain, rather than only when ↵Nirav Dave2017-02-2674-2499/+2546
| | | | | | | | UseAA is enabled." This reverts commit r296252 until 256-bit operations are more efficiently generated in X86. llvm-svn: 296279
* vec perm can go down either pipeline on P8.Eric Christopher2017-02-261-1/+1
| | | | | | No observable changes, spotted while looking at the scheduling description. llvm-svn: 296277
* Fix signed-unsigned comparison warningSanjoy Das2017-02-251-1/+1
| | | | llvm-svn: 296274
* [ValueTracking] Don't do an unchecked shift in ComputeNumSignBitsSanjoy Das2017-02-253-2/+79
| | | | | | | | | | | | | | | | | | | | | | Summary: Previously we used to return a bogus result, 0, for IR like `ashr %val, -1`. I've also added an assert checking that `ComputeNumSignBits` at least returns 1. That assert found an already checked in test case where we were returning a bad result for `ashr %val, -1`. Fixes PR32045. Reviewers: spatel, majnemer Reviewed By: spatel, majnemer Subscribers: efriedma, mcrosier, llvm-commits Differential Revision: https://reviews.llvm.org/D30311 llvm-svn: 296273
* [APInt] Add APInt::extractBits() method to extract APInt subrange (reapplied)Simon Pilgrim2017-02-255-8/+62
| | | | | | | | | | | | | | | | The current pattern for extract bits in range is typically: Mask.lshr(BitOffset).trunc(SubSizeInBits); Which can be particularly slow for large APInts (MaskSizeInBits > 64) as they require the allocation of memory for the temporary variable. This is another of the compile time issues identified in PR32037 (see also D30265). This patch adds the APInt::extractBits() helper method which avoids the temporary memory allocation. Differential Revision: https://reviews.llvm.org/D30336 llvm-svn: 296272
* [AVX-512] Fix the execution domain for scalar FMA instructions.Craig Topper2017-02-254-19/+20
| | | | llvm-svn: 296271
* [AVX-512] Fix the execution domain on some instructions.Craig Topper2017-02-254-11/+20
| | | | llvm-svn: 296270
* [AVX-512] Add an additional test case to show the execution domain for ↵Craig Topper2017-02-251-0/+12
| | | | | | vrqsrtsd is wrong. llvm-svn: 296269
* [AVX-512] Use update_llc_test_checks.py to regenerate the avx512er intrinsic ↵Craig Topper2017-02-251-23/+90
| | | | | | test. llvm-svn: 296268
* reenable accidentally disabled test NFC.Nirav Dave2017-02-251-14/+14
| | | | llvm-svn: 296266
* [AVX-512] Remove unnecessary masked versions of VCVTSS2SD and VCVTSD2SS ↵Craig Topper2017-02-251-24/+11
| | | | | | using the scalar register class. We only have patterns for the masked intrinsics. llvm-svn: 296264
* [ExecutionDepsFix] Don't make copies of LiveReg objects when collecting ↵Craig Topper2017-02-252-13/+29
| | | | | | | | | | | | | | | | | | | | | | | operands for soft instructions Summary: While collecting operands we make copies of the LiveReg objects which are stored in the LiveRegs array. If the instruction uses the same register multiple times we end up with multiple copies. Later we iterate through the collected list of LiveReg objects and merge DomainValues. In the process of doing this the merge function can change the contents of the original LiveReg object in the LiveRegs array, but not the copies that have been made. So when we get to the second usage of the register we end up seeing a stale copy of the LiveReg object. To fix this I've stopped copying and now just store a pointer to the original LiveReg object. Another option might be to avoid adding the same register to the Regs array twice, but this approach seemed simpler. The included test case exposes this bug due to an AVX-512 masked OR instruction using the same register for the passthru operand and one of the inputs to the OR operation. Fixes PR30284. Reviewers: RKSimon, stoklund, MatzeB, spatel, myatsina Reviewed By: RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30242 llvm-svn: 296260
* No need to copy the variable [NFC]Artyom Skrobov2017-02-251-2/+1
| | | | llvm-svn: 296259
* Revert r296215, "[PDB] General improvements to Stream library." and followings.NAKAMURA Takumi2017-02-2578-1965/+841
| | | | | | | | | | | | | | | | | r296215, "[PDB] General improvements to Stream library." r296217, "Disable BinaryStreamTest.StreamReaderObject temporarily." r296220, "Re-enable BinaryStreamTest.StreamReaderObject." r296244, "[PDB] Disable some tests that are breaking bots." r296249, "Add static_cast to silence -Wc++11-narrowing." std::errc::no_buffer_space should be used for OS-oriented errors for socket transmission. (Seek discussions around llvm/xray.) I could substitute s/no_buffer_space/others/g, but I revert whole them ATM. Could we define and use LLVM errors there? llvm-svn: 296258
* Update various test's codegen. NFCAmaury Sechet2017-02-252-10/+482
| | | | llvm-svn: 296257
* Add test for known bits in uaddo and saddo.Amaury Sechet2017-02-251-0/+54
| | | | llvm-svn: 296255
* The automatic CHECK: to CHECK-LABEL: conversion, back in 2013,Artyom Skrobov2017-02-251-7/+7
| | | | | | | had missed most labels in this test because they didn't end with a colon. llvm-svn: 296254
* [DebugInfo] Skip implicit_const attributes when dumping .debug_info. NFC.Victor Leschuk2017-02-251-0/+6
| | | | | | | | | | | When dumping .debug_info section we loop through all attributes mentioned in .debug_abbrev section and dump values using DWARFFormValue::extractValue(). We need to skip implicit_const attributes here as their values are not really located in .debug_info but directly in .debug_abbrev. This patch fixes triggered assert() in DWARFFormValue::extractValue() caused by trying to access implicit_const values from .debug_info. llvm-svn: 296253
* In visitSTORE, always use FindBetterChain, rather than only when UseAA is ↵Nirav Dave2017-02-2574-2546/+2499
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | enabled. Recommiting after fixup of 32-bit aliasing sign offset bug in DAGCombiner. * Simplify Consecutive Merge Store Candidate Search Now that address aliasing is much less conservative, push through simplified store merging search and chain alias analysis which only checks for parallel stores through the chain subgraph. This is cleaner as the separation of non-interfering loads/stores from the store-merging logic. When merging stores search up the chain through a single load, and finds all possible stores by looking down from through a load and a TokenFactor to all stores visited. This improves the quality of the output SelectionDAG and the output Codegen (save perhaps for some ARM cases where we correctly constructs wider loads, but then promotes them to float operations which appear but requires more expensive constant generation). Some minor peephole optimizations to deal with improved SubDAG shapes (listed below) Additional Minor Changes: 1. Finishes removing unused AliasLoad code 2. Unifies the chain aggregation in the merged stores across code paths 3. Re-add the Store node to the worklist after calling SimplifyDemandedBits. 4. Increase GatherAllAliasesMaxDepth from 6 to 18. That number is arbitrary, but seems sufficient to not cause regressions in tests. 5. Remove Chain dependencies of Memory operations on CopyfromReg nodes as these are captured by data dependence 6. Forward loads-store values through tokenfactors containing {CopyToReg,CopyFromReg} Values. 7. Peephole to convert buildvector of extract_vector_elt to extract_subvector if possible (see CodeGen/AArch64/store-merge.ll) 8. Store merging for the ARM target is restricted to 32-bit as some in some contexts invalid 64-bit operations are being generated. This can be removed once appropriate checks are added. This finishes the change Matt Arsenault started in r246307 and jyknight's original patch. Many tests required some changes as memory operations are now reorderable, improving load-store forwarding. One test in particular is worth noting: CodeGen/PowerPC/ppc64-align-long-double.ll - Improved load-store forwarding converts a load-store pair into a parallel store and a memory-realized bitcast of the same value. However, because we lose the sharing of the explicit and implicit store values we must create another local store. A similar transformation happens before SelectionDAG as well. Reviewers: arsenm, hfinkel, tstellarAMD, jyknight, nhaehnle llvm-svn: 296252
* [Doc] Modernize programmers manualPiotr Padlewski2017-02-251-28/+21
| | | | | | | | | | | | | | Summary: Fixed bunch of for loops to range based for loop and bunch of rendundat types with auto. Reviewers: echristo, silvas, chandlerc Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D30338 llvm-svn: 296251
* Empty line. NFCIXin Tong2017-02-251-1/+0
| | | | llvm-svn: 296250
* Add static_cast to silence -Wc++11-narrowing.Daniel Jasper2017-02-251-1/+1
| | | | llvm-svn: 296249
* [PDB] Disable some tests that are breaking bots.Zachary Turner2017-02-251-3/+3
| | | | | | | | This has to do with big endian, but I can't fix it until Monday. The code itself is fine, just the tests are wrong. Disabling 3 tests for now. llvm-svn: 296244
* AMDGPU/SI: export s_waitcnt builtinJan Vesely2017-02-251-1/+2
| | | | | | Differential Revision: https://reviews.llvm.org/D30358 llvm-svn: 296228
* Minor code cleanup. NFC.Junmo Park2017-02-251-1/+1
| | | | llvm-svn: 296222
* Re-enable BinaryStreamTest.StreamReaderObject.Zachary Turner2017-02-252-34/+28
| | | | | | | I had an invalid pointer / size calculation that was causing a stack smash. Should be fixed now. llvm-svn: 296220
* Remove redundant code. NFC.Akira Hatanaka2017-02-251-4/+0
| | | | llvm-svn: 296219
* Clean up ObjCARCOpts.cpp. NFC.Akira Hatanaka2017-02-251-81/+7
| | | | | | | I removed unused functions and variables and moved variables closer to their uses. llvm-svn: 296218
* Disable BinaryStreamTest.StreamReaderObject temporarily.Zachary Turner2017-02-251-33/+33
| | | | | | This is crashing on some bots, so I need some time to investigate. llvm-svn: 296217
* [PDB] General improvements to Stream library.Zachary Turner2017-02-2578-841/+1971
| | | | | | | | | | | | | | | This adds various new functionality and cleanup surrounding the use of the Stream library. Major changes include: * Renaming of all classes for more consistency / meaningfulness * Addition of some new methods for reading multiple values at once. * Full suite of unit tests for reader / writer functionality. * Full set of doxygen comments for all classes. * Streams now store their own endianness. * Fixed some bugs in a few of the classes that were discovered by the unit tests. llvm-svn: 296215
* [PDB] Rename Stream related source files.Zachary Turner2017-02-2570-118/+118
| | | | | | | | | | | | | | This is part of a larger effort to get the Stream code moved up to Support. I don't want to do it in one large patch, in part because the changes are so big that it will treat everything as file deletions and add, losing history in the process. Aside from that though, it's just a good idea in general to make small changes. So this change only changes the names of the Stream related source files, and applies necessary source fix ups. llvm-svn: 296211
* [XRAY] A Color Choosing helper for XRay GraphDean Michael Berris2017-02-256-76/+308
| | | | | | | | | | | | | | | | | | | Summary: In Preparation for graph comparison, this patch breaks out the color choice code from xray-graph into a library and adds polynomials for the Sequential and Difference sets from ColorBrewer. Depends on D29005 Reviewers: dblaikie, chandlerc, dberris Reviewed By: dberris Subscribers: chandlerc, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D29363 llvm-svn: 296210
* [InlineCost] Move the code in isGEPOffsetConstant to a lambda.Easwaran Raman2017-02-251-13/+9
| | | | | | Differential revision: https://reviews.llvm.org/D30112 llvm-svn: 296208
* Minor code cleanup. NFC.Junmo Park2017-02-251-1/+1
| | | | llvm-svn: 296207
* [PGO] Directory name stripping in global identifier for static functionsRong Xu2017-02-252-4/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current internal option -static-func-full-module-prefix keeps all the directory path the profile counter names for static functions. The default of this option is false. This strips the directory names from the source filename which is problematic: (1) it creates linker errors for profile-generation compilation, exposed in our internal benchmarks. We are seeing messages like "warning: relocation refers to discarded section". This is due to the name conflicts after the stripping. (2) the stripping only applies to getPGOFuncName. Current Thin-LTO module importing for the indirect-calls assumes the source directory name not being stripped. Current default value for this option can potentially prevent some inter-module indirect-call-promotions. This patch turns the default value for -static-func-full-module-prefix to true. The second part of the patch is to have an alternative implementation under the internal option -static-func-strip-dirname-prefix=<value> This options specifies level of directories to be stripped from the source filename. Using a large value as the parameter has the same effect as -static-func-full-module-prefix. Differential Revision: http://reviews.llvm.org/D29512 llvm-svn: 296206
* [sancov] extending sancov --help documentationMike Aizatsky2017-02-241-2/+13
| | | | | | Differential Revision: https://reviews.llvm.org/D30361 llvm-svn: 296205
* [WebAssembly] Add support for using a wasm global for the stack pointer.Dan Gohman2017-02-249-87/+221
| | | | | | | This replaces the __stack_pointer variable which was allocated in linear memory. llvm-svn: 296201
* [Hexagon] Undo shift folding where it could simplify addressing modeKrzysztof Parzyszek2017-02-242-3/+134
| | | | | | | | | | | | For example, avoid (single shift): r0 = and(##536870908,lsr(r0,#3)) r0 = memw(r1+r0<<#0) in favor of (two shifts): r0 = lsr(r0,#5) r0 = memw(r1+r0<<#2) llvm-svn: 296196
* [WebAssembly] Basic support for Wasm object file encoding.Dan Gohman2017-02-2464-389/+2074
| | | | | | | | | With the "wasm32-unknown-unknown-wasm" triple, this allows writing out simple wasm object files, and is another step in a larger series toward migrating from ELF to general wasm object support. Note that this code and the binary format itself is still experimental. llvm-svn: 296190
* [.gitignore] Update .gitignore to ignore a nested build directoryChris Bieneman2017-02-241-0/+3
| | | | | | | | | | | | | | | | | Summary: A number of tools and common workflows include putting a build directory inside the source checkout under the folder "build". Adding this to .gitignore seems useful. As an example, the CMake Tools plugin for VSCode does this. Reviewers: chandlerc, echristo, zturner Reviewed By: zturner Subscribers: MatzeB, mehdi_amini, llvm-commits, jgosnell Differential Revision: https://reviews.llvm.org/D30346 llvm-svn: 296188
* [Hexagon] Prettify code in HexagonDAGToDAGISel::SelectKrzysztof Parzyszek2017-02-241-47/+13
| | | | llvm-svn: 296187
* AMDGPU : Replace FMAD with FMA when denormals are enabled.Wei Ding2017-02-245-2/+39
| | | | | | Differential Revision: http://reviews.llvm.org/D29958 llvm-svn: 296186
* Revert "Correct register pressure calculation in presence of subregs"Stanislav Mekhanoshin2017-02-249-155/+30
| | | | | | | | This reverts commit r296009. It broke one out of tree target and also does not account for all partial lines added or removed when calculating PressureDiff. llvm-svn: 296182
OpenPOWER on IntegriCloud