- Feb 10, 2020
-
-
Kerry McLaughlin authored
Summary: Adds the following SVE2 intrinsics: - cadd & sqcadd - cmla & sqrdcmlah - saddlbt, ssublbt & ssubltb Reviewers: sdesmalen, dancgr, efriedma, cameron.mcinally, c-rhodes, rengolin Reviewed By: sdesmalen Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73636
-
Simon Pilgrim authored
As noted on PR44379, we didn't attempt to lower vector shuffles using bit rotations on XOP/AVX512F targets. This patch lowers to uniform ISD:ROTL nodes - ROTR isn't supported by XOP and they are interchangeable for constant values anyway. There might be cases where targets without ISD:ROTL support would benefit from this (expanding to SRL+SHL+OR), which I'll investigate in a future patch. Also, non-AVX512BW targets fail to concatenate 256-bit rotations back to 512-bits (split during shuffle lowering as they don't have v32i16/v64i8 types). --- Internal shuffle tests indicate theres a bug somewhere that I haven't been able to track down yet.
-
Raphael Isemann authored
m_size can only be 1 or 0 and indicates if the optional has a value. Calling it 'm_size', giving it a size_t data type and then also comparing indices against 'size' is very confusing. Let's just make this a bool.
-
Florian Hahn authored
This patch adds a first version of a MemorySSA based DSE. It is missing a lot of features, which will get added as follow-ups, to help to keep the review manageable. The patch uses the following general approach: given a MemoryDef, walk upwards to find clobbering MemoryDefs that may be killed by the starting def. Then check that there are no uses that may read the location of the original MemoryDef in between both MemoryDefs. A bit more concretely: For all MemoryDefs StartDef: 1. Get the next dominating clobbering MemoryDef (DomAccess) by walking upwards. 2. Check that there no reads between DomAccess and the StartDef by checking all uses starting at DomAccess and walking until we see StartDef. 3. For each found DomDef, check that: 1. There are no barrier instructions between DomDef and StartDef (like throws or stores with ordering constraints). 2. StartDef is executed whenever DomDef is executed. 3. StartDef completely overwrites DomDef. 4. Erase DomDef from the function and MemorySSA. The patch uses a very simple approach to guarantee that no throwing instructions are between 2 stores: We only allow accesses to stack objects, access that are in the same basic block if the block does not contain any throwing instructions or accesses in functions that do not contain any throwing instructions. This will get lifted later. Besides adding support for the missing cases, there is plenty of additional potential for improvements as follow-up work, e.g. the way we visit stores (could be just a traversal of the MemorySSA, rather than collecting them up-front), using the alias information discovered during walking to optimize the MemorySSA. This is loosely based on D40480 by Dave Green. Reviewers: dmgreen, rnk, efriedma, bryant, asbirlea, Tyker Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D72700
-
Raphael Isemann authored
-
Raphael Isemann authored
Enum cases aren't all uppercase.
-
Raphael Isemann authored
-
Kerry McLaughlin authored
Summary: Implements the following intrinsics: - @llvm.aarch64.sve.histcnt - @llvm.aarch64.sve.histseg - @llvm.aarch64.sve.match - @llvm.aarch64.sve.nmatch Reviewers: c-rhodes, sdesmalen, dancgr, efriedma, rengolin Reviewed By: c-rhodes Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74117
-
Kirill Bobyrev authored
Summary: Clangd does not find references of designated iniitializers yet and, as a result, is unable to rename such references. This patch addresses this issue. Resolves: https://github.com/clangd/clangd/issues/247 Reviewers: sammccall Reviewed By: sammccall Subscribers: merge_guards_bot, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D72867
-
Kerry McLaughlin authored
Summary: Implements the following intrinsics: - @llvm.aarch64.sve.[s|u]abalb - @llvm.aarch64.sve.[s|u]abalt - @llvm.aarch64.sve.[s|u]addlb - @llvm.aarch64.sve.[s|u]addlt - @llvm.aarch64.sve.[s|u]sublb - @llvm.aarch64.sve.[s|u]sublt - @llvm.aarch64.sve.[s|u]abdlb - @llvm.aarch64.sve.[s|u]abdlt - @llvm.aarch64.sve.sqdmullb - @llvm.aarch64.sve.sqdmullt - @llvm.aarch64.sve.[s|u]mullb - @llvm.aarch64.sve.[s|u]mullt Reviewers: sdesmalen, dancgr, efriedma, cameron.mcinally, rengolin Reviewed By: sdesmalen Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73719
-
Florian Hahn authored
This copies the DSE tests into a MSSA subdirectory to test the MemorySSA backed DSE implementation, without disturbing the original tests. Differential Revision: https://reviews.llvm.org/D72145
-
Frank Laub authored
Summary: The `AffineValueMap` is moved into `Dialect/AffineOps` to prevent a cyclic dependency between `Analysis` and `Dialect/AffineOps`. Reviewers: bondhugula, herhut, nicolasvasilache, rriddle, mehdi_amini Reviewed By: rriddle, mehdi_amini Subscribers: mgorny, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, Joonsoo, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74277
-
Richard Smith authored
1) Fix a regression in llvmorg-11-init-2485-g0e3a4877840 that would reject some cases where a class name is shadowed by a typedef-name causing a destructor declaration to be rejected. Prefer a tag type over a typedef in destructor name lookup. 2) Convert the "type in destructor declaration is a typedef" error to an error-by-default ExtWarn to allow codebases to turn it off. GCC and MSVC do not enforce this rule.
-
Djordje Todorovic authored
The call site info was not updated correctly when deleting corresponding call instructions. Differential Revision: https://reviews.llvm.org/D73700
-
Simon Moll authored
Summary: Proposal and roadmap towards vector predication in LLVM. This patch documents that a) It is recognized that current LLVM is ill-equipped for vector predication. b) The community is working on a solution. c) A concrete prototype exists in the VP extension (D57504). Reviewers: rkruppe, rengolin, cameron.mcinally, SjoerdMeijer, andrew.w.kaylor, craig.topper, sdesmalen, k-ishizaka, lattner, fhahn Reviewed By: andrew.w.kaylor Subscribers: rogfer01, merge_guards_bot, simoncook, s.egerton, llvm-commits, efocht Tags: #llvm Differential Revision: https://reviews.llvm.org/D73889
-
Jan Kratochvil authored
D73303 was failing on Fedora Linux and so it was disabled by Skip the AssertFrameRecognizer test for Linux. I find no easy way how to find out if it gets recognized as `__assert_fail` or `__GI___assert_fail` as during `Process` ctor libc.so.6 is not yet loaded by the debuggee. DWARF symbol `__GI___assert_fail` overrides the ELF symbol `__assert_fail`. While external debug info (=DWARF) gets disabled for testsuite (D55859) that sure does not apply for real world usage. Differential Revision: https://reviews.llvm.org/D74252
-
Martin Storsjö authored
-
Kai Nacke authored
When specifying -march=arch[8|9|10], those CPU types do NOT support the vector extension. In this case the vector ABI must be disabled. The generated data layout should NOT contain 64-v128. Reviewers: uweigand Differential Revision: https://reviews.llvm.org/D74146
-
Djordje Todorovic authored
Use the isCandidateForCallSiteEntry(). This should mostly be an NFC, but there are some parts ensuring the moveCallSiteInfo() and copyCallSiteInfo() operate with call site entry candidates (both Src and Dest should be the call site entry candidates). Differential Revision: https://reviews.llvm.org/D74122
-
Jan Kratochvil authored
Remove all beginning > from the sample commands as my accidental copy-paste (multiple times...) will discard ./bin/llvm-lit which is difficult to rebuild (I have to rm -rf and cmake it all again). Differential Revision: https://reviews.llvm.org/D74296
-
Raphael Isemann authored
This actually tests all the different situations in which we can call virtual functions. This removes also all skipIfs as the first skipIf for Linux is apparently fixed and the second skipIf was just failing due to the constructor call (which should be its own test and not be tested here).
-
Sebastian Neubauer authored
Based on D72931 This adds a new feature called A16 which is enabled for gfx10. gfx9 keeps the R128A16 feature so it can share all the instruction encodings with gfx7/8. Differential Revision: https://reviews.llvm.org/D73956
-
Johannes Doerfert authored
There is a bug in `update_test_checks.py` that combines check lines it should not. For now we unbreak the bots by making all possibilities explicit.
-
Johannes Doerfert authored
This is a minimal but important advancement over the existing code. A cast with an operand that is only used in the cast retains the no-alias property of the operand.
-
Johannes Doerfert authored
-
Djordje Todorovic authored
Fix the added License. Differential Revision: https://reviews.llvm.org/D74207
-
Amara Emerson authored
I'm not sure there's a test case for this, but it's better to be safe.
-
Johannes Doerfert authored
Traversing PHI nodes is natural with the genericValueTraversal but also a bit tricky. The problem is similar to the ones we have seen in AAAlign and AADereferenceable, namely that we continue to increase the range in each iteration. We use a pessimistic approach here to stop the iterations. Nevertheless, optimistic information can now be propagated through a PHI node.
-
Johannes Doerfert authored
The change is performed as stated by the FIXME and the tests are adjusted. All changes look fine to me and values can be inferred as undef without it being an error.
-
Johannes Doerfert authored
The genericValueTraversal will already handle SelectInst properly and we just needed to allow them in the initialize method.
-
Johannes Doerfert authored
Casts can be handled natively by the ConstantRange class. We do limit it to extends for now as we assume an integer type in different locations. A TODO and a test case with a FIXME was added to remove that restriction in the future.
-
Johannes Doerfert authored
We now call the base class method as we should.
-
Craig Topper authored
-
Johannes Doerfert authored
Inspired by https://llvm.discourse.group/t/impossible-condition-optimization/461
-
Johannes Doerfert authored
-
Craig Topper authored
[X86] Make (insert_vector_elt (v8i16 zerovec), i16 %x, 0) generate the same code as (v8i16 (build_vector %x, 0, 0, 0, 0, 0, 0, 0)). Instead of using a insrw to element 0, use movzx and movd. Same for v16i8.
-
Michael Liao authored
-
Michael Liao authored
- Lifetime intrinsics expect the pointer directly from alloca. Need extra handling for targets with alloca on non-default (or non-zero) address space.
-
Craig Topper authored
-
Craig Topper authored
Using sign extend forces the adjacent element to either all zeros or all ones. But all ones is a NAN. So that doesn't seem like a great idea. Trying to work on supporting this with strict FP where NAN would definitely be bad.
-