- Jun 05, 2023
-
-
Timm Bäder authored
-
Amaury Séchet authored
Currently, a node and its users are added back to the worklist in reverse topological order after it is combined. This diff changes that order to be topological. This is part of a larger migration to get the DAGCombiner to process nodes in topological order. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D127115
-
Simon Pilgrim authored
Based off the legalize-add-v*.mir tests
-
Simon Pilgrim authored
Based off the legalize-add.mir tests
-
khei4 authored
Differential Revision: https://reviews.llvm.org/D152068
-
khei4 authored
Differential Revision: https://reviews.llvm.org/D152091
-
Mateja Marjanovic authored
For image and buffer stores the default behaviour on GFX11 and older is to set all unset components to zero. So if we pass only X component it will be the same as X000, or XY same as XY00. This patch simplifies the passed vector of components in InstCombine by removing zero components from the end. For image stores it also trims DMask if necessary. Reviewed by: arsenm, foad, nhaehnle, piotr
-
Jay Foad authored
-
Simon Pilgrim authored
Fixes #63091
-
Simon Pilgrim authored
-
Simon Pilgrim authored
G_CTTZ_ZERO_UNDEF is always legal using the BSF instruction, G_CTTZ requires the BMI1 TZCNT instruction
-
LLVM GN Syncbot authored
-
Dominik Adamski authored
OpenMP standard (section 3.3 for OpenMP 5.2) requires that _OPENMP macro contains release date of given OpenMP standard version. Differential Revision: https://reviews.llvm.org/D151083 Reviewed By: kiranchandramohan
-
Tom Eccles authored
Previously only a constant reference was stored in the FirOpBuilder. However, a lot of code was merged using FirOpBuilder builder{rewriter, getKindMapping(mod)}; This is incorrect because the KindMapping returned will go out of scope as soon as FirOpBuilder's constructor had run. This led to an infinite loop running some tests using HLFIR (because the stack space containing the kind mapping was re-used and corrupted). One solution would have just been to fix the incorrect call sites, however, as a large number of these had already made it past review, I decided to instead change FirOpBuilder to store its own copy of the KindMapping. This is not costly because nearly every time we construct a KindMapping is exclusively to construct a FirOpBuilder. To make this common pattern simpler, I added a new constructor to FirOpBuilder which calls getKindMapping(). Differential Revision: https://reviews.llvm.org/D151881 -
Tom Eccles authored
The old fir.allocmem operation returned a !fir.heap<.> type. The new fir.alloca operation returns a !fir.ref<.> type. This patch inserts a fir.convert so that the old type is preserved. This prevents verifier failures when types returned from fir.if statements don't match the expected type. Differential Revision: https://reviews.llvm.org/D151921
-
Johannes Reifferscheid authored
Reviewed By: akuegel Differential Revision: https://reviews.llvm.org/D152133
-
Guillaume Chatelet authored
This reverts commit 9ec6ebd3. The patch broke RISCV and aarch64 builtbots.
-
Mikhail Gudim authored
Reapply with extra check for struct types, which caused buildbot failures last time. ----- The freeze instruction has not been handled by SCCPInstVisitor. This patch adds SCCPInstVisitor::visitFreezeInst(FreezeInst &I) method to handle freeze instructions. Differential Revision: https://reviews.llvm.org/D151659
-
Viktoriia Bakalova authored
Summary: Reviewers: Subscribers: Differential Revision: https://reviews.llvm.org/D150185
-
Guillaume Chatelet authored
This is based on ideas from @nafi to: - use a branchless version of 'cmp' for 'uint32_t', - completely resolve the lexicographic comparison through vector operations when wide types are available. We also get rid of byte reloads and serializing '__builtin_ctzll'. I did not include the suggestion to replace comparisons of 'uint16_t' with two 'uint8_t' as it did not seem to help the codegen. This can be revisited in sub-sequent patches. The code been rewritten to reduce nested function calls, making the job of the inliner easier and preventing harmful code duplication. Reviewed By: nafi3000 Differential Revision: https://reviews.llvm.org/D148717
-
Matthias Springer authored
Also support replacing payload ops with ConstantLike ops in the TrackingListener, even if the replacement op does not have the same name. (Not supported for ops with multiple results, as this would require splitting the handle.) Differential Revision: https://reviews.llvm.org/D152127
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D152125
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D152124
-
Jay Foad authored
-
David Green authored
To go with D149267 and D149967, this adds predicated mla/mls patterns, selected from select(mask, add(a, mul(b, c)), a) -> mla(a, mask, b, c). The existing patterns are eventually removed by D149967. Differential Revision: https://reviews.llvm.org/D149969
-
Chen Zheng authored
-
Mehdi Amini authored
This was missed when the other dialects adopted it. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D151410
-
Qiu Chaofan authored
Reviewed By: shchenz Differential Revision: https://reviews.llvm.org/D141249
-
Adrian Kuegel authored
-
Nathan Ridge authored
This carries over the fix previously made for semantic highlighting https://reviews.llvm.org/D92148, to the new inactiveRegions protocol as well. In addition, the directives at the beginning and end of an inactive region are now excluded from the region. Fixes https://github.com/clangd/clangd/issues/1631 Fixes https://github.com/clangd/clangd/issues/773 Differential Revision: https://reviews.llvm.org/D151190
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
pvanhout authored
This patch splits the GlobalISelEmitter.cpp file, which imports DAG ISel patterns for GISel, into separate "GISelMatchTable.h/cpp" files. The main motive is readability & maintainability. GlobalISelEmitter.cpp was about 6400 lines of mixed code, some bits implementing the match table codegen, some others dedicated to importing DAG patterns. Now it's down to 2700 + a 2150 header + 2000 impl. It's a tiny bit more lines overall but that's to be expected - moving inline definitions to out-of-line, adding comments in the .cpp, etc. all of that takes additional space, but I think the tradeoff is worth it. I did as little unrelated code changes as possible, I would say the biggest change is the introduction of the `gi` namespace used to prevent name conflicts/ODR violations with type common names such as `Matcher`. It was previously not an issue because all of the code was in an anonymous namespace. This moves all of the "match table" code out of the file, so predicates, rules, and actions are all separated now. I believe this helps separating concerns, now `GlobalISelEmitter.cpp` is more focused on importing DAG patterns into GI, instead of also containing the whole match table internals as well. Note: the new files have a "GISel" prefix to make them distinct from the other "GI" files in the same folder, which are for the combiner. Reviewed By: aemerson Differential Revision: https://reviews.llvm.org/D151432
-
Mikhail Goncharov authored
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D151998
-
Qiu Chaofan authored
-