- Mar 01, 2022
-
-
Michael Kruse authored
Add applyStaticChunkedWorkshareLoop method implementing static schedule when chunk-size is specified. Unlike a static schedule without chunk-size (where chunk-size is chosen by the runtime such that each thread receives one chunk), we need two nested loops: one for looping over the iterations of a chunk, and a second for looping over all chunks assigned to the threads. This patch includes the following related changes: * Adapt applyWorkshareLoop to triage between the schedule types, now possible since all schedules have been implemented. The default schedule is assumed to be non-chunked static, as without OpenMPIRBuilder. * Remove the chunk parameter from applyStaticWorkshareLoop, it is ignored by the runtime. Change the value for the value passed to the init function to 0, as without OpenMPIRBuilder. * Refactor CanonicalLoopInfo::setTripCount and CanonicalLoopInfo::mapIndVar as used by both, applyStaticWorkshareLoop and applyStaticChunkedWorkshareLoop. * Enable Clang to use the OpenMPIRBuilder in the presence of the schedule clause. Differential Revision: https://reviews.llvm.org/D114413
-
Peter Klausler authored
Add a header-only implementation of Briggs & Torczon's fast small integer set data structure to flang/include/flang/Common, and use it in the runtime to manage a pool of Fortran unit numbers with recycling. This replaces the bit set previously used for that purpose. The set is initialized on demand with the negations of all the NEWUNIT= unit numbers that can be returned to any kind of integer variable. For programs that require more concurrently open NEWUNIT= unit numbers than the pool can hold, they are now allocated with a non-recycling counter. This allows as many open units as the operating system provides. Many of the top-line comments in flang/unittests/Runtime had the wrong path name. I noticed this while adding a unit test for the fast integer set data structure, and cleaned them up. Differential Revision: https://reviews.llvm.org/D120685
-
Arthur O'Dwyer authored
Reviewed as part of D118616.
-
Siva Chandra Reddy authored
Only the methods currently required by the libc have been added. Most of the existing uses of atomic operations have been switched over to this new class. A future change will clean up the rest of uses. This change now allows building mutex and condition variable code with a C++ compiler which does not have stdatomic.h, for example g++. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D120642
-
Kiran Chandramohan authored
This patch includes some changes which brings the code in line with llvm coding guidelines. -> Remove curlies for one line if statements. -> Remove else after return. -> Removes a few usage of auto. -> Add Doxygen comments Addresses post review comments in D120403 by @schweitz. Reviewed By: schweitz Differential Revision: https://reviews.llvm.org/D120657
-
not-jenni authored
Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D120338
-
Peter Klausler authored
Derived types with allocatable and pointer components cannot be used in I/O data transfer statements unless they have defined I/O procedures available (as type-bound or regular generics). These cases are caught as errors by the I/O runtime library, but it would be better if they were flagged during compilation. (Address comment in review: don't use explicit name string lengths.) Differential Revision: https://reviews.llvm.org/D120675
-
Jonas Devlieghere authored
This reverts commit a83cf7a8 because it breaks a bunch of build bots.
-
Hsiangkai Wang authored
This patch adds support for the following SME instruction: * RDSVL The reference can be found here: https://developer.arm.com/documentation/ddi0602/2021-12 Differential Revision: https://reviews.llvm.org/D120603
-
Hsiangkai Wang authored
This patch adds support for the following SME instructions: * ADDSPL, ADDSVL The reference can be found here: https://developer.arm.com/documentation/ddi0602/2021-12 Differential Revision: https://reviews.llvm.org/D120554
-
Okwan Kwon authored
Add a pattern matcher for ExtractSliceOp when its source is a constant. The matching heuristics can be governed by the control function since generating a new constant is not always beneficial. Differential Revision: https://reviews.llvm.org/D119605
-
Jonas Devlieghere authored
WithColor has an "auto detection mode" which looks whether the corresponding whether the corresponding cl::opt is enabled or not. While this is great when opting into cl::opt, it's not so great for downstream users of this utility, which might have their own competing options to enable or disable colors. The WithColor constructor takes a color mode, but the big benefit of the class are its static error and warning helpers and default error handlers. In order to allow users of this utility to enable or disable colors globally, this patch adds the ability to specify a global auto detection function. By default, the auto detection function behaves the way that it does today. The benefit of this patch lies in that it can be overwritten. In addition to a ability to change the auto detection function, I've also made it possible to get your hands on the default auto detection function, so you swap it back if if you so desire. This patch allow downstream users (like LLDB) to globally disable colors with its own command line flag. Differential revision: https://reviews.llvm.org/D120593
-
- Feb 28, 2022
-
-
Clint Caywood authored
__builtin_clz requires just a single instruction on x86 and arm, so this is a performance improvement. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D120579
-
LLVM GN Syncbot authored
-
Louis Dionne authored
libc++abi should be responsible for installing its own headers, it doesn't make sense for libc++ to be responsible for it. Differential Revision: https://reviews.llvm.org/D101458
-
Louis Dionne authored
-
Louis Dionne authored
-
Lei Zhang authored
If we have a chain of `tensor.insert_slice` ops inserting some `tensor.pad` op into a `linalg.fill` and ranges do not overlap, we can also elide the `tensor.pad` later. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D120446
-
Lei Zhang authored
Fold tensor.insert_slice(tensor.pad(<input>), linalg.fill) into tensor.insert_slice(<input>, linalg.fill) if the padding value and the filling value are the same. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D120410
-
Martin Storsjö authored
International currency symbols (like USD, EUR) are returned with a trailing space, like "USD ", on previously supported Unix platforms. On Windows, the locales return them without a trailing space. Also adjust the test for expecting a different unicode sequence for the national currency symbol for ru_RU.UTF-8 and zh_CN.UTF-8. Differential Revision: https://reviews.llvm.org/D120547
-
Yaxun (Sam) Liu authored
It should be oclc_abi_version* instead of abi_version*. Reviewed by: Artem Belevich Differential Revision: https://reviews.llvm.org/D120557
-
Philip Reames authored
-
Scott Linder authored
Last year I was working at Swift to add support for [Localization of Compiler Diagnostic Messages](https://forums.swift.org/t/localization-of-compiler-diagnostic-messages/36412/41). We are currently using YAML as the new diagnostic format. The LLVM::YAMLParser didn't have a support for multiline string literal folding and it's crucial to have that for the diagnostic message to help us keep up with the 80 columns rule. Therefore, I decided to add a multiline string literal folding support to the YAML parser. Patch By: @HassanElDesouky (Hassan ElDesouky) Differential Revision: https://reviews.llvm.org/D102590
-
Jorge Gorbe Moya authored
Since https://reviews.llvm.org/D120334, passing a temporary LangOptions object to Lexer results in stack-use-after-scope.
-
Arthur Eubanks authored
Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D120666
-
Craig Topper authored
I think the immediate values we check for on the GREV nodes already protect this, but better to be explicit.
-
Valentin Clement authored
Just adds some lowering test for complex operations. These were not added when the lowering landed. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: schweitz Differential Revision: https://reviews.llvm.org/D120672
-
Dávid Bolvanský authored
Motivation: ``` int foo(int x, int y) { // any compiler will happily inline this function return x / y; } int test(int x, int y) { int r = 0; [[clang::noinline]] r += foo(x, y); // for some reason we don't want any inlining here return r; } ``` In 2018, @kuhar proposed "Introduce per-callsite inline intrinsics" in https://reviews.llvm.org/D51200 to solve this motivation case (and many others). This patch solves this problem with call site attribute. The implementation is "smaller" wrt approach which uses new intrinsics and thanks to https://reviews.llvm.org/D79121 (Add nomerge statement attribute to clang), we have got some basic infrastructure to deal with attrs on statements with call expressions. GCC devs are more inclined to call attribute solution as well, as builtins are problematic for them - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104187. But they have no patch proposal yet so.. We have free hands here. If this approach makes sense, next future steps would be support for call site attributes for always_inline / flatten. Reviewed By: aaron.ballman, kuhar Differential Revision: https://reviews.llvm.org/D119061
-
Erich Keane authored
The function doesn't modify anything, and took minimal effort to get const-correct, AND is necessary for a patch I've been working on for concepts.
-
LLVM GN Syncbot authored
-
Arthur O'Dwyer authored
`uniform_int_distribution<T>` is UB unless `T` is one of the non-character, non-boolean integer types (`short` or larger). However, libc++ has never enforced this. D114129 accidentally made `uniform_int_distribution<bool>` into an error. Make it now *intentionally* an error; and likewise for the character types and all user-defined class and enum types; but permit `__[u]int128_t` to continue working. Apply the same static_assert to all the integer distributions. Differential Revision: https://reviews.llvm.org/D114920
-
Arthur O'Dwyer authored
This follows the general direction of D118736 that `_LIBCPP_HAS_NO_INCOMPLETE_RANGES` does *not* guard anything outside of the `std::ranges::` namespace itself. This means we must permit `ranges::less` etc. in no-ranges mode; that seems fine to me. Differential Revision: https://reviews.llvm.org/D120139
-
Dawid Jurczak authored
Since https://reviews.llvm.org/D120334 we shouldn't pass temporary LangOptions to Lexer. This change fixes stack-use-after-scope UB in LocalizationChecker found by sanitizer-x86_64-linux-fast buildbot and resolve similar issue in HeaderIncludes.
-
Stanislav Mekhanoshin authored
TODO: merge flat with global promoting to flat. Differential Revision: https://reviews.llvm.org/D120351
-
Fangrui Song authored
To decrease difference for D120650. Also, rename some `OutputSection *sec` (and `cmd`) to the more common `osec`.
-
Haowei Wu authored
This patch adds llvm-ifs commandline guide Differential Review: https://reviews.llvm.org/D118514
-
Okwan Kwon authored
This reverts commit 31049941.
-
Sanjay Patel authored
extractvalue (any_mul_with_overflow X, -1), 0 --> -X There are similar other potential transforms that we could do as noted by the last TODO in the test diffs. Fixes #54053
-
Andrei Elovikov authored
The test used to run whole O3 pipeline. Modify it to contain LLVM IR right before LV and limit passes to "-loop-vectorizer -simplifycfg". For the RUN line with forced VF force interleave factor as well to simplify CHECKs as interleaving isn't related to the purpose of the test. I also tried to add "noalias" to pointer arguments in @test_gather_not_profitable_pr48429 but LAI seems unable to use them. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D119786
-
Craig Topper authored
I think the function does the correct thing internally, but it's confusing to read.
-