summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* 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] Fix `is_llvm_target_library` and support out-of-order componentsChris Bieneman2017-02-082-11/+79
| | | | | | | | | | | | Summary: This patch is required by D28855, and enables us to rely on CMake's ability to handle out of order target dependencies. Reviewers: mgorny, chapuni, bryant Subscribers: llvm-commits, jgosnell Differential Revision: https://reviews.llvm.org/D28869 llvm-svn: 294514
* build_llvm_package.bat: Build teh clang-format plugin separatelyHans Wennborg2017-02-081-1/+11
| | | | | | | | | | | In r293373 we switched the build to linking dynamically against the Universal CRT and include the redistributables in the installer. However, clang-format.exe is copied into the vsix and needs to be statically linked. This commit makes us build the plugin in a separate step that uses static linking. llvm-svn: 294513
* ThinLTOBitcodeWriter: Strip debug info from merged module.Peter Collingbourne2017-02-082-0/+9
| | | | | | | | | | This module will contain nothing but vtable definitions and (soon) available_externally function definitions, so there is no point in keeping debug info in the module. Differential Revision: https://reviews.llvm.org/D28913 llvm-svn: 294511
* [SLP] Additional test to check correct work of horizontal reductions,Alexey Bataev2017-02-081-0/+576
| | | | | | NFC. llvm-svn: 294505
* [Loop Vectorizer] Cost-based decision for vectorization form of memory ↵Elena Demikhovsky2017-02-084-270/+566
| | | | | | | | | | | | | | | | | | instruction. Making the cost model selecting between Interleave, GatherScatter or Scalar vectorization form of memory instruction. The right decision should be done for non-consecutive memory access instrcuctions that may have more than one vectorization solution. This patch includes the following changes: - Cost Model calculates the cost of Load/Store vector form and choose the better option between Widening, Interleave, GatherScactter and Scalarization. Cost Model keeps the widening decision. - Arrays of Uniform and Scalar values are moved from Legality to Cost Model. - Cost Model collects Uniforms and Scalars per VF. The collection is based on CM decision map of Loadis/Stores vectorization form. - Vectorization of memory instruction is performed according to the CM decision. Differential Revision: https://reviews.llvm.org/D27919 llvm-svn: 294503
* [DebugInfo] Rename EmitDebugValue to EmitDebugThreadLocal (NFC)Simon Dardis2017-02-085-5/+5
| | | | | | | As pointed out by David Blaikie in the post commit review of r292624, EmitDebugValue should be called EmitDebugThreadLocal. llvm-svn: 294500
* [X86][SSE] Regenerate scalar integer conversions to float testsSimon Pilgrim2017-02-081-100/+661
| | | | llvm-svn: 294499
* Fix inline-asm-diags.ll on Windows, give it a triple to avoid WoA thumb ↵Reid Kleckner2017-02-081-1/+1
| | | | | | confusion llvm-svn: 294496
* llvm-objdump: make NoLeadingAddr work on more than just MachOSaleem Abdulrasool2017-02-083-6/+9
| | | | | | | | | Support printing the disassembly without the address on all formats rather than making it MachO specific. Patch by Jeff Muizelaar! llvm-svn: 294495
* [DAGCombiner] NFC. Mark ByteProvider accessors as constArtur Pilipenko2017-02-081-2/+2
| | | | llvm-svn: 294494
* GlobalISel: select G_VASTART on iOS AArch64.Tim Northover2017-02-085-1/+83
| | | | | | | The AAPCS ABI is substantially more complicated so that's coming in a separate patch. For now we can generate correct code for iOS though. llvm-svn: 294493
* GlobalISel: translate @llvm.va_start intrinsic.Tim Northover2017-02-087-0/+50
| | | | | | | Because we need to preserve the memory access being performed we need a separate instruction to represent this. llvm-svn: 294492
* NVPTX: Extract mem intrinsic expansions into utilitiesMatt Arsenault2017-02-084-213/+287
| | | | llvm-svn: 294490
* [Reassociate] Remove an unused argument. NFC.Chad Rosier2017-02-081-5/+4
| | | | llvm-svn: 294489
* Fix bitcode upgrade for DIGlobalVariables with a var: field.Adrian Prantl2017-02-083-2/+32
| | | | | | | | | | | | | | | This is a follow-up to https://reviews.llvm.org/D29349. It turns out that NeedUpgradeToDIGlobalVariableExpression is always necessary when we encountered a version==0 record because it may always be referenced via a list of globals in a DICompileUnit. My tests weren't good enough to catch this though. To trigger this case, we need much older bitcode produced by LLVM around version 3.7. <rdar://problem/30404262> Differential Revision: https://reviews.llvm.org/D29693 llvm-svn: 294488
* [InstCombine] add test for missed vector icmp fold; NFCSanjay Patel2017-02-082-10/+23
| | | | | | | Also, move the related existing scalar test to a renamed file where I'm planning to add more icmp-add tests. llvm-svn: 294487
* Move inline asm diags tests to an ARM directory.Sanne Wouda2017-02-081-1/+1
| | | | | | | The assembler syntaxes (and parsers) differ too much to expect this test to pass for all of them. llvm-svn: 294475
* [Hexagon] Fix decoding conflict between A2_zxtb and A4_extKrzysztof Parzyszek2017-02-082-1/+3
| | | | llvm-svn: 294472
* [mips] MUL macro variationsSimon Dardis2017-02-084-3/+179
| | | | | | | | | | | | | | [mips] MUL macro variations Adds support for MUL macro variations. Patch by: Srdjan Obucina Reviewers: zoran.jovanovic, vkalintiris, dsanders, sdardis, obucina, seanbruno Differential Revision: https://reviews.llvm.org/D16807 llvm-svn: 294471
* [InstCombine] add local name for repeated calls; NFC Sanjay Patel2017-02-081-6/+4
| | | | llvm-svn: 294470
* Fix inline asm diagnostics test.Sanne Wouda2017-02-081-3/+3
| | | | | | | Don't depend on X86 everywhere. Fix the original problem with a reg-exp for the column number. llvm-svn: 294468
* LVI: Add a per-value worklist limit to LazyValueInfo.Daniel Berlin2017-02-081-6/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: LVI is now depth first, which is optimal for iteration strategy in terms of work per call. However, the way the results get cached means it can still go very badly N^2 or worse right now. The overdefined cache is per-block, because LVI wants to try to get different results for the same name in different blocks (IE solve the problem PredicateInfo solves). This means even if we discover a value is overdefined after going very deep, it doesn't cache this information, causing it to end up trying to rediscover it again and again. The same is true for values along the way. In practice, overdefined anywhere should mean overdefined everywhere (this is how, for example, SCCP works). Until we get around to reworking the overdefined cache, we need to limit the worklist size we process. Note that permanently reverting the DFS strategy exploration seems the wrong strategy (temporarily seems fine if we really want). BFS is clearly the wrong approach, it just gets luckier on some testcases. It's also very hard to design an effective throttle for BFS. For DFS, the throttle is directly related to the depth of the CFG. So really deep CFGs will get cutoff, smaller ones will not. As the CFG simplifies, you get better results. In BFS, the limit is it's related to the fan-out times average block size, which is harder to reason about or make good choices for. Bug being filed about the overdefined cache, but it will require major surgery to fix it (plumbing predicateinfo through CVP or LVI). Note: I did not make this number configurable because i'm not sure anyone really needs to tweak this knob. We run CVP 3 times. On the testcases i have the slow ones happen in the middle, where CVP is doing cleanup work other things are effective at. Over the course of 3 runs, we don't see to have any real loss of performance. I haven't gotten a minimized testcase yet, but just imagine in your head a testcase where, going *up* the CFG, you have branches, one of which leads 50000 blocks deep, and the other, to something where the answer is overdefined immediately. BFS would discover the overdefined faster than DFS, but do more work to do so. In practice, the right answer is "once DFS discovers overdefined for a value, stop trying to get more info about that value" (and so, DFS would normally cache the overdefined results for every value it passed through in those 50k blocks, and never do that work again. But it don't, because of the naming problem) Reviewers: chandlerc, djasper Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29715 llvm-svn: 294463
* [x86] add AVX512vl target for more coverage; NFCSanjay Patel2017-02-081-47/+122
| | | | llvm-svn: 294462
* [InstComobineCalls] Fix buildbot failures after r294453.Igor Laevsky2017-02-081-1/+1
| | | | | | | | Some targets don't support uint64_t options. Change type to unsigned. Differential Revision: https://reviews.llvm.org/D28909 llvm-svn: 294461
* [Assembler] Enable nicer diagnostics for inline assembly.Sanne Wouda2017-02-087-43/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed test. Summary: Enables source location in diagnostic messages from the backend. This is after parsing, during finalization. This requires the SourceMgr, the inline assembly string buffer, and DiagInfo to still be alive after EmitInlineAsm returns. This patch creates a single SourceMgr for inline assembly inside the AsmPrinter. MCContext gets a pointer to this SourceMgr. Using one SourceMgr per call to EmitInlineAsm would make it difficult for MCContext to figure out in which SourceMgr the SMLoc is located, while a single SourceMgr can figure it out if it has multiple buffers. The Str argument to EmitInlineAsm is copied into a buffer and owned by the inline asm SourceMgr. This ensures that DiagHandlers won't print garbage. (Clang emits a "note: instantiated into assembly here", which refers to this string.) The AsmParser gets destroyed before finalization, which means that the DiagHandlers the AsmParser installs into the SourceMgr will be stale. Restore the saved DiagHandlers. Since now we're using just one SourceMgr for multiple inline asm strings, we need to tell the AsmParser which buffer it needs to parse currently. Hand a buffer id -- returned from SourceMgr:: AddNewSourceBuffer -- to the AsmParser. Reviewers: rnk, grosbach, compnerd, rengolin, rovka, anemet Reviewed By: rnk Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29441 llvm-svn: 294458
* [X86][SSE] Tidyup LowerBuildVectorv16i8 and LowerBuildVectorv8i16. NFCI.Simon Pilgrim2017-02-081-20/+18
| | | | | | Run clang-format and standardized variable names between functions. llvm-svn: 294456
* Add test case for pr31890. NFCAmaury Sechet2017-02-081-0/+58
| | | | llvm-svn: 294455
* [AMDGPU][NFC] Assign IsaInfo to reference variable in order to shorten long ↵Konstantin Zhuravlyov2017-02-081-16/+13
| | | | | | lines llvm-svn: 294454
* [InstCombineCalls] Unfold element atomic memcpy instructionIgor Laevsky2017-02-083-0/+175
| | | | | | Differential Revision: https://reviews.llvm.org/D28909 llvm-svn: 294453
* [InstCombineCalls] Remove zero length atomic memcpy intrinsicsIgor Laevsky2017-02-082-0/+32
| | | | | | Differential Revision: https://reviews.llvm.org/D28909 llvm-svn: 294452
* Fix test to work on swift/cyclone tooDiana Picus2017-02-081-1/+1
| | | | | | | I forgot to remove the neonfp target feature from the test, which means we'd have trouble selecting VADDS on targets that have neonfp enabled by default. llvm-svn: 294451
* [AMDGPU] Add target information that is required by tools to metadataKonstantin Zhuravlyov2017-02-0817-267/+627
| | | | | | Differential Revision: https://reviews.llvm.org/D28760#fb670e28 llvm-svn: 294449
* Revert "[Assembler] Enable nicer diagnostics for inline assembly."Diana Picus2017-02-087-76/+43
| | | | | | This reverts commit r294433 because it seems it broke the buildbots. llvm-svn: 294448
* Revert r294356, "DebugInfo: Track spilled variables in LiveDebugValues"NAKAMURA Takumi2017-02-082-605/+7
| | | | | | | | | | | | | | It caused undefined behavior in VarLoc. As far as I investigated, - VarLoc::VarLoc() treats negative offset value as InvalidKind. Consider the case that (int64_t)MI.getOperand(1).getImm() is negative and whether it satisfies ((uint64_t)Offset < (1ULL << 32)). - Comparison operators in VarLoc behave undefined since VarLoc::Loc.Hash is uninitialized in case of InvalidKind. I guess Offset (in VarLoc) could be made aware of signed, but I am not sure. So I have reverted it for now. llvm-svn: 294447
* Move test from r294430 to target-specific directoryDiana Picus2017-02-082-0/+0
| | | | | | | The test is X86-specific, and it broke on the ARM bots because they don't build the X86 target. llvm-svn: 294446
* [AMDGPU][NFC] De-tabifyKonstantin Zhuravlyov2017-02-081-1/+1
| | | | llvm-svn: 294445
* Adding virtual destructor for PredicateBase.Alexander Kornienko2017-02-081-0/+1
| | | | | | | | A virtual destructor is needed, since the derived classes are stored in `iplist<PredicateBase> AllInfos;` and, apparently, ilist_node doesn't have a virtual destructor. llvm-svn: 294443
* [ARM] GlobalISel: Add FPR reg bankDiana Picus2017-02-087-2/+122
| | | | | | | | | | | | | Add a register bank for floating point values and select simple instructions using them (add, copies from GPR). This assumes that the hardware can cope with a single precision add (VADDS) instruction, so the legalizer will treat G_FADD as legal and the instruction selector will refuse to select if the hardware doesn't support it. In the future we'll want to be more careful about this, and legalize to libcalls if we have to use soft float. llvm-svn: 294442
* [AMDGPU] Distinguish between S/VGPR allocation and encoding granularitiesKonstantin Zhuravlyov2017-02-082-4/+16
| | | | | | Differential Revision: https://reviews.llvm.org/D29633 llvm-svn: 294441
* [AMDGPU] Move register related queries to subtarget classKonstantin Zhuravlyov2017-02-087-315/+299
| | | | | | Differential Revision: https://reviews.llvm.org/D29318 llvm-svn: 294440
* [AArch64][TableGen] Skip tied result operands for InstAliasAmara Emerson2017-02-0824-248/+253
| | | | | | | | | | | | | | | | | | | | | | | This patch checks the number of operands in the resulting instruction instead of just the alias, then skips over tied operands when generating the printing method. This allows us to generate the preferred assembly syntax for the AArch64 'ins' instruction, which should always be displayed as 'mov' according to the ARMARM. Several unit tests have changed as a result, but only to reflect the preferred disassembly. Some other InstAlias patterns (movk/bic/orr) needed a slight adjustment to stop them becoming the default and breaking other unit tests. Patch by Graham Hunter. Differential Revision: https://reviews.llvm.org/D29219 llvm-svn: 294437
* Update CODE_OWNERS with my new email addressDylan McKay2017-02-081-1/+1
| | | | llvm-svn: 294436
* [AVR] XFAIL a set of failing CodeGen testsDylan McKay2017-02-0810-0/+33
| | | | | | | | | There are about 3 underlying bugs causing the tests to fail. On top of that, some tests just we're 'generic' enough. i.e. 32-bit registers. llvm-svn: 294434
* [Assembler] Enable nicer diagnostics for inline assembly.Sanne Wouda2017-02-087-43/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Enables source location in diagnostic messages from the backend. This is after parsing, during finalization. This requires the SourceMgr, the inline assembly string buffer, and DiagInfo to still be alive after EmitInlineAsm returns. This patch creates a single SourceMgr for inline assembly inside the AsmPrinter. MCContext gets a pointer to this SourceMgr. Using one SourceMgr per call to EmitInlineAsm would make it difficult for MCContext to figure out in which SourceMgr the SMLoc is located, while a single SourceMgr can figure it out if it has multiple buffers. The Str argument to EmitInlineAsm is copied into a buffer and owned by the inline asm SourceMgr. This ensures that DiagHandlers won't print garbage. (Clang emits a "note: instantiated into assembly here", which refers to this string.) The AsmParser gets destroyed before finalization, which means that the DiagHandlers the AsmParser installs into the SourceMgr will be stale. Restore the saved DiagHandlers. Since now we're using just one SourceMgr for multiple inline asm strings, we need to tell the AsmParser which buffer it needs to parse currently. Hand a buffer id -- returned from SourceMgr:: AddNewSourceBuffer -- to the AsmParser. Reviewers: rnk, grosbach, compnerd, rengolin, rovka, anemet Reviewed By: rnk Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29441 llvm-svn: 294433
* Use dynamic symbols for ELF disassemblySam Parker2017-02-083-1/+60
| | | | | | | | | | | Disassembly currently begins from addresses obtained from the objects symbol table. For ELF, add the dynamic symbols to the list if no static symbols are available so that we can more successfully disassemble stripped binaries. Differential Revision: https://reviews.llvm.org/D29632 llvm-svn: 294430
* [ArgPromote] Delete a test that makes no sense (any more).Chandler Carruth2017-02-081-23/+0
| | | | | | | | | This test is under 'ArgumentPromotion' but there are no arguments that get promoted in the test case, so there seems to be no point. Also, there are no assertions about the output at all, so this seems like something we should just delete given the low value. llvm-svn: 294428
OpenPOWER on IntegriCloud