- Apr 02, 2021
-
-
Joseph Huber authored
Summary: There was a typo suggesting the user to use `LIBOMPTARGET_DEBUG` instead of `LIBOMPTARGET_INFO`
-
Yaxun (Sam) Liu authored
This function seems to be introduced by accident by https://github.com/llvm/llvm-project/commit/aa2b593f1495a972a4a592952760ec9d5f7c01f1 Such overloaded abs function did not exist before the refactoring, and does not exist in https://github.com/llvm/llvm-project/blob/main/clang/lib/Headers/__clang_cuda_cmath.h Conceptually it also does not make sense, since it adds something like double abs(int x) { return ::abs((double)x); } It caused regressions in CuPy. Reviewed by: Aaron Enye Shi, Artem Belevich Differential Revision: https://reviews.llvm.org/D99738
-
Craig Topper authored
This adds a new integer materialization strategy mainly targeted at 64-bit constants like 0xffffffff where there are 32 or more trailing ones with leading zeros. We can materialize these by using an addi -1 and srli to restore the leading zeros. This matches what gcc does. I haven't limited to just these cases though. The implementation here takes the constant, shifts out all the leading zeros and shifts ones into the LSBs, creates the new sequence, adds an srli, and checks if this is shorter than our original strategy. I've separated the recursive portion into a standalone function so I could append the new strategy outside of the recursion. Since external users are no longer using the recursive function, I've cleaned up the external interface to return the sequence instead of taking a vector by reference. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D98821
-
Philip Reames authored
-
cchen authored
done, NFC.
-
- Apr 01, 2021
-
-
Sanjay Patel authored
We can't see how much overhead/redundancy is being created with the partial checks. To make it smaller and easier to read, I reduced the vectorization factor because that does not add new information - it just duplicates things.
-
Stella Stamenova authored
-
Jay Foad authored
-
Philip Reames authored
Support deriving dereferenceability facts from allocation sites with known object sizes while correctly accounting for any possibly frees between allocation and use site. (At the moment, we're conservative and only allowing it in functions where we know we can't free.) This is part of the work on deref-at-point semantics. I'm making the change unconditional as the miscompile in this case is way too easy to trip by accident, and the optimization was only recently added (by me). There will be a follow up patch wiring through TLI since that should now be doable without introducing widespread miscompiles. Differential Revision: https://reviews.llvm.org/D95815
-
Mircea Trofin authored
The main part of the patch is the change in RegAllocGreedy.cpp: Q.collectInterferringVregs() needs to be called before iterating the interfering live ranges. The rest of the patch offers support that is the case: instead of clearing the query's InterferingVRegs field, we invalidate it. The clearing happens when the live reg matrix is invalidated (existing triggering mechanism). Without the change in RegAllocGreedy.cpp, the compiler ices. This patch should make it more easily discoverable by developers that collectInterferringVregs needs to be called before iterating. I will follow up with a subsequent patch to improve the usability and maintainability of Query. Differential Revision: https://reviews.llvm.org/D98232
-
Timm Bäder authored
This reverts commit 1ea9fa8c.
-
Timm Bäder authored
Set the source ranges for parsed GNU-style attributes in ParseGNUAttributes(), the same way that ParseCXX11Attributes() does it. Differential Revision: https://reviews.llvm.org/D75844
-
Anirudh Prasad authored
- This patch adds in support to accept the "#" character as part of an Identifier. - This support is needed especially for the HLASM dialect since "#" is treated as part of the valid "Alphabet" range - The way this is done is by making use of the previous precedent set by the `AllowAtInIdentifier` field in `MCAsmLexer.h`. A new field called `AllowHashInIdentifier` is introduced. - The static function `IsIdentifierChar` is also updated to accept the `#` character if the `AllowHashInIdentifier` field is set to true. Note: The field introduced in `MCAsmLexer.h` could very well be moved to `MCAsmInfo.h`. I'm not opposed to it. I decided to put it in `MCAsmLexer` since there seems to be some sort of precedent already with `AllowAtInIdentifier`. Reviewed By: abhina.sreeskantharajan, nickdesaulniers, MaskRay Differential Revision: https://reviews.llvm.org/D99277
-
Bradley Smith authored
Additionally, move the existing fixed vselect tests to *-vselect.ll. Differential Revision: https://reviews.llvm.org/D99418
-
Bradley Smith authored
When an SVE function calls another SVE function using the C calling convention we use the more efficient SVE VectorCall PCS. However, for the Fast calling convention we're incorrectly falling back to the generic AArch64 PCS. This patch adds the same "can use SVE vector calling convention" detection used by CallingConv::C to CallingConv::Fast. Co-authored-by:
Paul Walker <paul.walker@arm.com> Differential Revision: https://reviews.llvm.org/D99657
-
Brendon Cahoon authored
Update SIFoldOperands pass to recognize v_add_f64 and v_mul_f64 instructions for folding output modifiers. Differential Revision: https://reviews.llvm.org/D99505
-
Alexey Bataev authored
1. Need to cleanup InstrElementSize map for each new tree, otherwise might use sizes from the previous run of the vectorization attempt. 2. No need to include into analysis the instructions from the different basic blocks to save compile time. Differential Revision: https://reviews.llvm.org/D99677
-
Simon Pilgrim authored
If the inner shuffle already contains undef elements, then accept them in the merged shuffle as well. This helps some X86 HADD/SUB patterns where slow targets were ending up with HADD/SUB because the (un)merged shuffles were stuck either side of the ADD/SUB - meaning we ended up with a total cost much higher than the "2*shuffle+add" that a slow target usually expands a HADD/SUB to.
-
Andrzej Warzynski authored
The free form was introduced in Fortran 90, so treating .f77 as free-form was a bug. Differential Revision: https://reviews.llvm.org/D99494
-
Anastasia Stulova authored
-
Pavel Labath authored
and probably other posix oses. Use extra_images to ensure LD_LIBRARY_PATH is set correctly. Also take the opportunity to remove hand-rolled library extension management code in favor of the existing one.
-
Alexey Bataev authored
-
Pavel Labath authored
The test uses debug info from one binary to debug a different one. This does not work on macos, and its pure luck that it works elsewhere (the variable that it inspects happens to have the same address in both). The purpose of this test is to verify that lldb has not overwritten the target executable. That can be more easily achieved by checking the exit code of the binary, so change the test to do that. Also remove the llgs_test decorator, as it's preventing the test from running on macos. All the test needs is the platform functionality of lldb-server, which is available everywhere.
-
Michał Górny authored
-
Dmitry Preobrazhensky authored
Fixed bugs https://bugs.llvm.org//show_bug.cgi?id=49643, https://bugs.llvm.org//show_bug.cgi?id=49644, https://bugs.llvm.org//show_bug.cgi?id=49645. Differential Revision: https://reviews.llvm.org/D99413
-
Simon Pilgrim authored
For slow-hop targets, attempt to merge HADD/SUB pairs used in chains.
-
Simon Pilgrim authored
Attempt to bypass unused horiz-op operands. This is very similar to the PACKSS/PACKUS handling - we should try to merge these.
-
Simon Pilgrim authored
-
Dmitry Preobrazhensky authored
By convention, VOP1/2/C instructions which can be promoted to VOP3 have _e32 suffix while promoted instructions have _e64 suffix. Instructions which have a single variant should have no _e32/_e64 suffix. Unfortunately there was no simple way to identify single variant instructions - it was implemented by a hack. See bug https://bugs.llvm.org/show_bug.cgi?id=39086. This fix simplifies handling of single VOP instructions by adding a dedicated flag. Differential Revision: https://reviews.llvm.org/D99408
-
Florian Hahn authored
-
Balázs Kéri authored
Add printing of map 'DestroyRetVal'. Reviewed By: steakhal Differential Revision: https://reviews.llvm.org/D98502
-
David Sherwood authored
This patch just adds tests that we can vectorize loop such as these: for (i = 0; i < n; i++) dst[i * 7] += 1; and for (i = 0; i < n; i++) if (cond[i]) dst[i * 7] += 1; using scalable vectors, where we expect to use gathers and scatters in the vectorized loop. The vector of pointers used for the gather is identical to those used for the scatter so there should be no memory dependences. Tests are added here: Transforms/LoopVectorize/AArch64/sve-large-strides.ll Differential Revision: https://reviews.llvm.org/D99192 -
Vinayaka Bandishti authored
Fixes a bug in affine fusion pipeline where an incorrect slice is computed. After the slice computation is done, original domain of the the source is compared with the new domain that will result if the fusion succeeds. If the new domain must be a subset of the original domain for the slice to be valid. If the slice computed is incorrect, fusion based on such a slice is avoided. Relevant test cases are added/edited. Fixes https://bugs.llvm.org/show_bug.cgi?id=49203 Differential Revision: https://reviews.llvm.org/D98239
-
Muhammad Omair Javaid authored
This fixes flakiness in TestVSCode_launch.test_progress_events vscode.progress_events some times failed to populate in time for follow up iterations. Adding a minor delay before the the for the loop fixes the issue. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D99497
-
Muhammad Omair Javaid authored
This reverts commit feb6f2c7.
-
Muhammad Omair Javaid authored
This reverts commit 71b648f7. There was a typo in the last commit which was causing LLDB AArch64 Linux buildbot testsuite failures. Now fixed in current version.
-
Yevgeny Rouban authored
Removes CFGAnalyses from the preserved analyses set returned by LoopFlattenPass::run(). Reviewed By: Dave Green, Ta-Wei Tu Differential Revision: https://reviews.llvm.org/D99700
-
Harald van Dijk authored
Currently, support for the x32 ABI is handled as a multilib to the x86_64 target only. However, full self-hosting x32 systems treating it as a separate architecture with its own architecture triplets as well as search paths exist as well, in Debian's x32 port and elsewhere. This adds the missing architecture triplets and search paths so that clang can work as a native compiler on x32, and updates the tests so that they pass when using an x32 libdir suffix. Additionally, we would previously also assume that objects from any x86_64-linux-gnu GCC installation could be used to target x32. This changes the logic so that only GCC installations that include x32 support are used when targetting x32, meaning x86_64-linux-gnux32 GCC installations, and x86_64-linux-gnu and i686-linux-gnu GCC installations that include x32 multilib support. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D52050
-
Sam Parker authored
A frequent pattern for floating point conditional branches use an xor to invert the input for the branch. Instead we can fold away the xor by swapping the branch target instead. Differential Revision: https://reviews.llvm.org/D99171
-
Nicolas Vasilache authored
This revision tightens up the handling of attributes for both named and generic linalg ops. To demonstrate the IR validity, a working e2e Linalg example is added. Differential Revision: https://reviews.llvm.org/D99430
-