- Mar 14, 2024
-
-
Christian Sigg authored
-
Nick Desaulniers authored
Via: https://github.com/llvm/llvm-project/pull/84938#issuecomment-1992120095 --------- Co-authored-by:
Joseph Huber <huberjn@outlook.com>
-
Valentin Clement (バレンタイン クレメン) authored
Flang driver was already able to enable the CUDA language feature base on the file extension but there was no command line option. This PR adds one.
-
Florian Hahn authored
-
Usman Nadeem authored
There were two existing patterns: `concat_vectors(trunc(x), trunc(y)) -> uzp1(x, y)` `concat_vectors(assertzext(trunc(x)), assertzext(trunc(y))) -> uzp1(x, y)` Move them into a class and add the following `assertsext` pattern to it: `concat_vectors(assertsext(trunc(x)), assertsext(trunc(y))) -> uzp1(x, y)` Add the following transform for v8i8 and v4i16 result types to help with pattern matching: `truncating uzp1(x, y) -> trunc(concat(x, y))` And a pattern to go with it: `trunc(concat_vectors(x, y)) -> uzp1 (x, y)` Add another isel pattern for v8i8 and v4i16 result vector types, similar to the existing concat pattern, but with a trunc node in the begining: `trunc(concat_vectors(assertext_trunc(x), assertext_trunc(y))) -> xtn(uzp1(x, y))` -
David Blaikie authored
Rather than dealing with which is more readable, the named variable doesn't seem to add value here - so omit it.
-
- Mar 13, 2024
-
-
Zaara Syeda authored
In preparation of adding a similar instruction for large code model on AIX for 32-bit, rename the exisitng ADDItocL 64-instruction to ADDItocL8 to match the naming convention of other instructions with 32-bit and 64-bit variants.
-
Adrian Prantl authored
by handling *all* errors in IRExecDiagnosticHandler. The function that call this handles all unhandled errors with an `exit(1)`. rdar://124459751 I don't really have a testcase for this, since the crash report I got for this involved the Swift language plugin.
-
Han-Chung Wang authored
If low and high are constants (i.e., not attributes), users still prefer attributes. Otherwise, there could be failures in type inference. A failure is introduced by https://github.com/llvm/llvm-project/commit/60e562d11aeca8020de8d50ded7f0ba9e10e8843, see the drop_known_unit_constant_low_high test for more details.
-
Nick Desaulniers authored
-
Slava Zakharin authored
-
Slava Zakharin authored
The lowering currently relies on the trivial operations, so we should just lower it for REAL(16) the same way we do this for other trivial operations.
-
Slava Zakharin authored
-
Slava Zakharin authored
Discussion at https://discourse.llvm.org/t/inliner-cost-model/2992 This change adds a callback that reports whether inlining of the particular call site (communicated via ResolvedCall argument) is profitable or not. The default MLIR inliner pass behavior is unchanged, i.e. the callback always returns true. This callback may be used to customize the inliner behavior based on the target specifics (like target instructions costs), profitability of the inlining for further optimizations (e.g. if inlining may enable loop optimizations or scalar optimizations due to object shape propagation), optimization levels (e.g. -Os inlining may be quite different from -Ofast inlining), etc. One of the questions is whether the ResolvedCall entity represents enough of the context for the custom inlining models to come up with the profitability decision. I think we can start with this and extend it as necessary. --------- Co-authored-by:
Mehdi Amini <joker.eph@gmail.com>
-
agozillon authored
[Flang][OpenMP] Implement "promotion" of use_device_ptr non-cptr arguments to use_device_addr (#82834) This effectively implements some now deprecated OpenMP functionality that some applications (most notably at the moment GenASiS) unfortunately depend on (deprecated in specification version 5.2): "If a list item in a use_device_ptr clause is not of type C_PTR, the behavior is as if the list item appeared in a use_device_addr clause. Support for such list items in a use_device_ptr clause is deprecated." This PR downgrades the hard-error to a deprecated warning and "promotes" the above cases by simply moving the offending operands from the use_device_ptr value list to the back of the use_device_addr list (and moves the related symbols, locs and types that form the BlockArgs correspondingly) and then the generation of the target data construct proceeds as normal.
-
Alexey Bataev authored
Need to record casted extractelement for the externally used scalar, not original extract instruction.
-
Nikita Popov authored
Fixpoint verification failures outside our tests are usually not indicative of a bug -- don't be pushy about having people report them.
-
Jon Roelofs authored
ld: warning: ignoring duplicate libraries: This triggers quite frequently in llvm's build because CMake's library depends mechanism doesn't de-duplicate libraries on the link line. Duplication is necessary for ELF platforms, but means something subtly different on Darwin platforms, hence the warning. Since we don't have much control over that from CMake, just disable the warning wholesale whenever the linker is detected to support it.
-
Tom Eccles authored
Previously reduction variables were always passed by value into and out of the initialization and combiner regions of the OpenMP reduction declare operation. This worked well for reductions of primitive types (and might perform better than passing by reference). But passing by reference will be useful for array and derived type reductions (e.g. to move allocation inside of the init region). Passing reductions by reference requires different LLVM-IR generation when lowering from MLIR because some of the loads/stores/allocations will now be moved inside of the init and combiner regions. This alternate code generation is requested using a new attribute to omp.wsloop and omp.parallel. Existing lowerings from mlir are unaffected (these will continue to use the by-value argument passing. Flang will continue to pass by-value argument passing for trivial types unless a (hidden) command line argument is supplied. Non-trivial types will always use the by-ref lowering. Array reductions are not ready yet (but are coming very soon). In the meantime, this is tested by forcing existing reductions to use by-ref. Commit series for by-ref OpenMP reductions 3/3 --------- Co-authored-by:Mats Petersson <mats.petersson@arm.com>
-
Simon Pilgrim authored
Allows us to remove some tricky commutation matching
-
Simon Pilgrim authored
-
David Spickett authored
They are either flaky, or not cleaning up after themselves. See https://github.com/llvm/llvm-project/issues/85084.
-
Florian Hahn authored
This simplifies the code to create the recipe slightly as well as properly retaining the debug location of the input IR.
-
Zaara Syeda authored
This patch enables support that the XL compiler had for AIX under -qdatalocal/-qdataimported.
-
Zepp authored
We for some reason already had documentation for this attribute, but just weren’t linking to it.
-
David Spickett authored
Flaky on the bot: https://lab.llvm.org/buildbot/#/builders/96/builds/54435
-
mahesh-attarde authored
Fix uninitialized var and shift overflow.
-
Sirraide authored
Consider the following code: ```c bool const inf = (1.0/0.0); ``` When trying to emit the initialiser of this variable in C23, we end up hitting a code path in codegen in `VarDecl::evaluateValueImpl()` where we check for `IsConstantInitialization && (Ctx.getLangOpts().CPlusPlus || Ctx.getLangOpts().C23)`, and if that is the case and we emitted any notes, constant evaluation fails, and as a result, codegen issues this error: ``` <source>:1:12: error: cannot compile this static initializer yet 1 | bool const inf = (1.0/0.0); | ``` As a fix, only fail in C23 mode if we’re initialising a `constexpr` variable. This fixes #84784. -
Yingwei Zheng authored
Alive2: https://alive2.llvm.org/ce/z/r-67t9 It would improve the codegen if the target doesn't provide a defined value for ctlz/cttz with zero.
-
NagyDonat authored
This reapplies f32b04d4i, after fixing the use-after-free of ASTUnit in the unittest. https://github.com/llvm/llvm-project/pull/84469#issuecomment-1992163439 Co-authored-by:
Balazs Benics <benicsbalazs@gmail.com>
-
Jay Foad authored
The old name buffer_atomic_min_f32 is still tested as part of the alias tests.
-
Matt Arsenault authored
-
Louis Dionne authored
This was slated for removal in LLVM 19.
-
Jacek Caban authored
Detect COFF files by default and allow specifying it with --format argument. This is important for ARM64EC, which uses a separated symbol map for EC symbols. Since K_COFF is mostly compatible with K_GNU, this shouldn't really make a difference for other targets. This originally landed as #82642, but was reverted due to test failures in tests using no symbol table. Since COFF symbol can't express it, fallback to GNU format in that case.
-
Yingwei Zheng authored
Alive2: https://alive2.llvm.org/ce/z/Wm6kCk
-
Harald van Dijk authored
We were relying on roundings to implicitly canonicalize, which is generally safe, except with roundings that may be optimized away. Fixes #82937.
-
Jay Foad authored
This is unneeded because MUBUF_Real_Atomic_gfx11_gfx12 on the line above generates it automatically.
-
Simon Pilgrim authored
General cleanup and allows us to handle several commutable matches with a single pattern
-