- Apr 20, 2022
-
-
Andrew Litteken authored
When constructing canonical relationships between two regions, the first instruction of a basic block from the first region is used to find the corresponding basic block from the second region. However, debug instructions are not included in similarity matching, and therefore do not have a canonical numbering. This patch makes sure to ignore the debug instructions when finding the first instruction in a basic block. Reviewer: paquette Differential Revision: https://reviews.llvm.org/D123903
-
Fangrui Song authored
-
Nico Weber authored
Makes bin/llvm-lit \ projects/compiler-rt/test/profile/Profile-arm64/instrprof-darwin-dead-strip.c pass on my machine. Without this change, ld64 complains that the bitcode was generated by LLVM 15 while the reader is 13.1 -- the version of Xcode on my machine. Looks like the DYLD_LIBRARY_PATH technique isn't working. -lto_library was added back in ld64-136, which was in Xcode 4.6, which was released over 10 years ago. So relying on it should be safe by now. Differential Revision: https://reviews.llvm.org/D124018
-
Mehdi Amini authored
The printer is now resilient to invalid IR and will already automatically fallback to the generic form on invalid IR. Using the generic printer on pass failure was a conservative option before the printer was made failsafe. Reviewed By: lattner, rriddle, jpienaar, bondhugula Differential Revision: https://reviews.llvm.org/D123915
-
Kadir Cetinkaya authored
This increases cardinality of span latency metrics. Currently this was being shown to the user via file status updates as `Running Update (x)` after this change we'll only display `Running Update`. This also affects logs in case of a crash, but contents and version number for inputs are printed separately in that case already. Differential Revision: https://reviews.llvm.org/D124013
-
Mehdi Amini authored
-
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
-