- Apr 20, 2022
-
-
Mehdi Amini authored
-
Sanjay Patel authored
-
Nikita Popov authored
The LTO API has been removed.
-
Dmitry Makogon authored
This adds more tests with derived pointers.
-
- Apr 19, 2022
-
-
Nikita Popov authored
What this code is actually interested in are references to functions. Use of a function pointer type is being used as an imprecise proxy for that.
-
Nikita Popov authored
Use an API that returns both the address and the element type, and use that for the load type.
-
David Green authored
-
Florian Hahn authored
-
Nikita Popov authored
Pass through the ArrayTy instead.
-
Kirill Stoimenov authored
[ASan] Fixed a reporting bug in (load|store)N functions which would print unknown-crash instead of the proper error message when a the data access is unaligned. Reviewed By: kda, eugenis Differential Revision: https://reviews.llvm.org/D123643
-
Jonas Paulsson authored
Handle ZQ, ZR, ZS and ZT inline assembly operand constraints. Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D110267
-
Tom Ritter authored
Reviewed By: NoQ, xazax.hun, steakhal Differential Revision: https://reviews.llvm.org/D123155
-
gbreynoo authored
Two tests used the term "full archive" rather than "regular", these have been updated including the test names. They now also use --thin rather than the deprecated T. This change was made in preparation of D123142. Differential Revision: https://reviews.llvm.org/D123778
-
Qiongsi Wu authored
The goal of this patch is to improve distribution build's flexibility to include only applicable header files. Currently, the clang-resource-headers target contains nearly all the files in clang/lib/Headers. Most of these files are platform specific (e.g. immintrin.h is x86 specific). A distribution build will have to either include all the headers for all the platforms, or not include any headers. For example, if a distribution build for powerpc includes the clang-resource-headers target, it will include all the x86 specific headers, even-though the x86 specific headers cannot be used. This patch breaks up the clang-resource-headers list to a core list and platform specific lists. With the patch, a distribution build can now include the ppc-resource-headers to include the headers applicable to the powerpc platform. Specifically, one can now have cmake ... LLVM_DISTRIBUTION_COMPONENTS="clang;ppc-resource-headers" ... ../llvm ninja install-distribution then installs the powerpc headers. Similarly, one can do cmake ... LLVM_DISTRIBUTION_COMPONENTS="clang;x86-resource-headers" ... ../llvm to include headers applicable to the x86 platform in a distribution installation. To implement this behaviour, the patch does two things: * It breaks up the long files header file list to a core list and platform specific lists. * It adds numerous platform specific installation targets. Differential Revision: https://reviews.llvm.org/D123498
-
David Spickett authored
This is now going into 14.0.2 as 571c7d8f so will not be new in clang-15.
-
David Green authored
This teaches the perfect shuffle tables about lane inserts, that can help reduce the cost of many entries. Many of the shuffle masks are one-away from being correct, and a simple lane move can be a lot simpler than trying to use ext/zip/etc. Because they are not exactly like the other masks handled in the perfect shuffle tables, they require special casing to generate them, with a special InsOp Operator. The lane to insert into is encoded as the RHSID, and the move from is grabbed from the original mask. This helps reduce the maximum perfect shuffle entry cost to 3, with many more shuffles being generatable in a single instruction. Differential Revision: https://reviews.llvm.org/D123386
-
Alexey Bataev authored
-
Alexey Bataev authored
This reverts commit 0e1f4d4d to fix a crash reported in PR54976
-
Kirill Bobyrev authored
This introduces filtering out inclusions based on the resolved path. This mechanism will be important for disabling warnings for headers that we can not diagnose correctly yet. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D123488
-
Joseph Huber authored
Summary: This patch removes the OpenMP sections in the release notes. These will be filled once the release is close and implementations are finalized.
-
Joseph Huber authored
Summary: Previously we needed the `Xopenmp-target=` option during the linking phase so the old offloading driver knew which items to extract and link for the device. Now that the new driver has become the default this is no longer necessary and will cause a warning to be emitted for the unused argument. This should be silenced to avoid noise.
-
Arnab Dutta authored
Fold away gpu.memcpy op when only uses of dest are the memcpy op in question, its allocation and deallocation ops. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D121279
-
David Green authored
The perfect shuffle tables encode a cost of either 0 (a nop-copy) or 1 (a single instruction) with a cost encoding of 0 in the upper 2 bits. All perfect shuffles with any cost are then marked as legal shuffles though (the maximum encoded cost is 3), which can confuse the DAG combiner into thinking the shuffles are cheaper than the should be. Limiting legal shuffles to single instructions seems to do better in most case, producing less instructions for complex shuffles. There are some cases that now become tbl, which may be better or worse depending on whether the instruction is in a loop and the tbl load can be hoisted out. Differential Revision: https://reviews.llvm.org/D123377
-
Roy Jacobson authored
This reverts commit 454d1df9.
-
Florian Hahn authored
This patch moves SCEV expansion of steps used by VPWidenIntOrFpInductionRecipes to the pre-header using VPExpandSCEVRecipe. This ensures that those steps are expanded while the CFG is in a valid state. Previously, SCEV expansion may happen during vector body code-generation, during which the CFG may be invalid, causing issues with SCEV expansion. Depends on D122095. Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D122096
-
David Green authored
A brief introduction to perfect shuffles - AArch64 NEON has a number of shuffle operations - dups, zips, exts, movs etc that can in some way shuffle around the lanes of a vector. Given a shuffle of size 4 with 2 inputs, some shuffle masks can be easily codegen'd to a single instruction. A <0,0,1,1> mask for example is a zip LHS, LHS. This is great, but some masks are not so simple, like a <0,0,1,2>. It turns out we can generate that from zip LHS, <0,2,0,2>, having generated <0,2,0,2> from uzp LHS, LHS, producing the result in 2 instructions. It is not obvious from a given mask how to get there though. So we have a simple program (PerfectShuffle.cpp in the util folder) that can scan through all combinations of 4-element vectors and generate the perfect combination of results needed for each shuffle mask (for some definition of perfect). This is run offline to generate a table that is queried for generating shuffle instructions. (Because the table could get quite big, it is limited to 4 element vectors). In the perfect shuffle tables zip, unz and trn shuffles were being cost as 2, which is higher than needed and skews the perfect shuffle tables to create inefficient combinations. This sets them to 1 and regenerates the tables. The codegen will usually be better and the costs should be more precise (but it can get less second-order re-use of values from multiple shuffles, these cases should be fixed up in subsequent patches. Differential Revision: https://reviews.llvm.org/D123379
-
Alban Bridonneau authored
SLP uses the distance between pointers to optimize the getShallowScore. However the current code misses the case where we are trying to vectorize for VF=4, and the distance between pointers is 2. In that case the returned score reflects the case of contiguous loads, when it's not actually contiguous. The attached unit tests have 5 loads, where the program order is not the same as the offset order in the GEPs. So, the choice of which 4 loads to bundle together matters. If we pick the first 4, then we can vectorize with VF=4. If we pick the last 4, then we can only vectorize with VF=2. This patch makes a more conservative choice, to consider all distances>1 to not be a case of contiguous load, and give those cases a lower score. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D123516
-
Dmitry Preobrazhensky authored
Differential Revision: https://reviews.llvm.org/D123929
-
Balazs Benics authored
D121387 simplified the doc url generation process, so we no longer need the HasAlphaDocumentation enum entry. This patch removes that. Reviewed By: martong Differential Revision: https://reviews.llvm.org/D121459
-
Balazs Benics authored
AFAIK we should prefer https://clang.llvm.org/docs/analyzer/checkers.html to https://clang-analyzer.llvm.org/{available_checks,alpha_checks}.html This patch will ensure that the doc urls produced by tablegen for the ClangSA, will use the new url. Nothing else will be changed. Reviewed By: martong, Szelethus, ASDenysPetrov Differential Revision: https://reviews.llvm.org/D121387
-
Balazs Benics authored
It turns out all checkers explicitly mention the `Documentation<>`. It makes sense to demand this, so emit a fatal tablegen error if such happens. Reviewed By: martong, Szelethus Differential Revision: https://reviews.llvm.org/D122244
-
Balazs Benics authored
Reviewed By: martong, ASDenysPetrov Differential Revision: https://reviews.llvm.org/D122243
-
David Spickett authored
Given that you'd never find empty string, just error. Also add a test that an invalid expr generates an error. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D123793
-
Sven van Haastregt authored
Align with the `-fdeclare-opencl-builtins` option and other get_image_* builtins which have the const attribute. Differential Revision: https://reviews.llvm.org/D122728
-
Marius Brehler authored
Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D123503
-
Roy Jacobson authored
When doing overload resolution, we have to check that candidates' parameter types are equal before trying to find a better candidate through checking which candidate is more constrained. This revision adds this missing check and makes us diagnose those cases as ambiguous calls when the types are not equal. Fixes GitHub issue https://github.com/llvm/llvm-project/issues/53640 Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D123182
-
Jay Foad authored
The sramecc feature changes the behaviour of d16 loads so they do not preserve the unused 16 bits of the result register, but it has no impact on d16 stores, so we should make use of them even when the feature is enabled. Differential Revision: https://reviews.llvm.org/D104912
-
Timm Bäder authored
Implement N2418 for C2x. Differential Revision: https://reviews.llvm.org/D119221
-
Nikita Popov authored
If capturing groups are used, the regex matcher handles something like `(.*)suffix` by first doing a maximal match of `.*`, trying to match `suffix` afterward, and then reducing the maximal stop position one by one until this finally succeeds. This makes the match quadratic in the length of the line (with large constant factors). This is particularly problematic because regexes of this form are ubiquitous in FileCheck (something like `[[VAR:%.*]] = ...` falls in this category), making FileCheck executions much slower than they have any right to be. This implements a very crude optimization that checks if suffix starts with a fixed character, and steps back to the last occurrence of that character, instead of stepping back by one character at a time. This drops FileCheck time on clang/test/CodeGen/RISCV/rvv-intrinsics/vloxseg_mask.c from 7.3 seconds to 2.7 seconds. An obvious further improvement would be to check more than one character (once again, this is particularly relevant for FileCheck, because the next character is usually a space, which happens to have many occurrences). This should help with https://github.com/llvm/llvm-project/issues/54821.
-
Matthias Springer authored
This function was missing a termination condition.
-