- May 14, 2024
-
-
Christian Ulmann authored
-
Christian Ulmann authored
This commit extends the verifier for atomics to properly verify larger types. Beforehand, the verifier strictly rejected larger integer types, while it now consults the data layout to determine if their bitsize is a power of two. This behavior reflects what LLVM's verifier is checking for.
-
Thorsten Schütt authored
Fixes https://github.com/llvm/llvm-project/issues/92062
-
Youngsuk Kim authored
Closes #91188
-
erichkeane authored
When writing the test for this I seemingly forgot to put 'CHECK' on the lines, so I didn't notice that I was printing the identifiers as pointers rather than their names. This patch corrects the tests and the print behavior.
-
Nathan Sidwell authored
Remove excess parentheses and use `boolean ? true-case : false-case` idiom.
-
cor3ntin authored
Given `foo...[idx]` if idx is value dependent, the expression is type dependent. Fixes #91885 Fixes #91884
-
Nathan Sidwell authored
Remove 'Valid' local boolean that has a single use, and return directly instead.
-
Nathan Sidwell authored
MCOperand has a constructor that permits a nullptr MCInst, and BOLT makes use of that. Adjust MCOperand's dumper to permit such use.
-
Mubashar Ahmad authored
Adds the LLVM vector.deinterleave2 intrinsic to the MLIR LLVM dialect. The deinterleave2 intrinsic takes a vector and returns two vectors with the first having even elements and the second with odd elements from the input vector. The inverse of vector.interleave2.
-
AdityaK authored
As mentioned in #68882 and https://discourse.llvm.org/t/rfc-replacing-getelementptr-with-ptradd/68699 Gep arithmetic isn't consistent with different types. GVNSink didn't realize this and sank all geps as long as their operands can be wired via PHIs in a post-dominator. Fixes: #85333 Reapply: #88440 after fixing the non-determinism issues in #90995
-
Justin Cady authored
This is a renewed attempt to land @toddlipcon's D34654. The comments on that patch indicate a broad desire for some ability to ignore headers. After considering various options, including migrating to std::regex, I believe this is the best path forward. It's intuitive to have separate regexes for including headers versus excluding them, and this approach has the added benefit of being completely opt-in. No existing configs will break, regardless of existing HeaderFilterRegex values. This functionality is useful for improving performance when analyzing a targeted subset of code, as well as in cases where some collection of headers cannot be modified (third party source, for example).
-
Krzysztof Parzyszek authored
This moves lowering of standalone OpenMP ops into the dispatch function. Follow-up to PR90098.
-
wanglei authored
Because most of tests assume target-abi=`lp64d`, adding the corresponding feature is reasonable. rg -l loongarch -g '!*.s' | xargs sed -i '/mtriple=loongarch/ {/-mattr=/!{/target-abi/! s/mtriple=loongarch.. /&-mattr=+d /}}' -
Guillaume Chatelet authored
This patch adds tests for `memcpy` and `memset` making sure that we don't access buffers out of bounds. It relies on POSIX `mmap` / `mprotect` and works only when FULL_BUILD_MODE is disabled. The bug showed up while enabling software prefetching. `loop_and_tail_offset` is always running at least one iteration but in some configurations loop unrolled prefetching was actually needing only the tail operation and no loop iterations at all.
-
Florian Hahn authored
Follow-up to remove a redundant comment post-commit https://github.com/llvm/llvm-project/pull/91897
-
jeanPerier authored
The HLFIR pass lowering WHERE (hlfir.where op) was too aggressive in its hoisting of scalar sub-expressions from LHS/RHS/MASKS outside of the loops generated for the WHERE construct. This violated F'2023 10.2.3.2 point 10 that stipulated that elemental operations must be evaluated only for elements corresponding to true values, because scalar operations are still elemental, and hoisting them is invalid if they could have side effects (e.g, division by zero) and if the MASK is always false (i.e., the loop body is never evaluated). The difficulty is that 10.2.3.2 point 9 mandates that nonelemental function must be evaluated before the loops. So it is not possible to simply stop hoisting non hlfir.elemental operations. Marking calls with an elemental/nonelemental attribute would not allow the pass to be correct if inlining is run before and drops this information, beside, extracting the argument tree that may have been CSE-ed with the rest of the expression evaluation would be a bit combursome. Instead, lower nonelemental calls into a new hlfir.exactly_once operation that will allow retaining the information that the operations contained inside its region must be hoisted. This allows inlining to operate before if desired in order to improve alias analysis. The LowerHLFIROrderedAssignments pass is updated to only hoist the operations contained inside hlfir.exactly_once bodies.
-
aengelke authored
Frame indices are dense and consecutive, so use a vector instead of a std::map. Due to possibly negative frame indices, use zig-zag encoding. IndexedMap was not usable, as it attempted to copy the null value, which is not possible with a std::unique_ptr. This is just a minor performance improvement, but a low-hanging fruit.
-
Andrzej Warzyński authored
Splits `TransposeOpLowering` into two patterns: 1. `Transpose2DWithUnitDimToShapeCast` - rewrites 2D `vector.transpose` as `vector.shape_cast` (there has to be at least one unit dim), 2. `TransposeOpLowering` - the original pattern without the part extracted into `Transpose2DWithUnitDimToShapeCast`. The rationale behind the split: * the output generated by `Transpose2DWithUnitDimToShapeCast` doesn't really match the intended output from `TransposeOpLowering` as documented in the source file - it doesn't make much sense to keep it embedded inside `TransposeOpLowering`, * `Transpose2DWithUnitDimToShapeCast` _does_ work for scalable vectors, `TransposeOpLowering` _does_ not. -
Joseph Huber authored
Summary: These have long since been removed, support for ctors / dtors now happens through special kernels the backend creates.
-
Joseph Huber authored
Summary: Since the move to the statically linked plugins, we added a new way to directly control which plugins will be added. Delete these old ones as they will cause the build to fail and suggest the new format.
-
Simon Pilgrim authored
I've kept the grep checks for extsh/extsb instructions, but we can now see the actual codegen as well
-
Timm Bäder authored
-
Timm Bäder authored
We don't need the metadata size for every element, just for the topmost descriptor.
-
Timm Bäder authored
-
Timm Bäder authored
Make sure we pass a non-null Descriptor when creating a new Block.
-
Yingwei Zheng authored
This patch relands https://github.com/llvm/llvm-project/pull/86409. I mistakenly thought that `Known.makeNegative()` clears the sign bit of `Known.Zero`. This patch fixes the assertion failure by explicitly clearing the sign bit.
-
Dmitry Vasilyev authored
Install `secondprog` to the remote target if necessary.
-
Dmitry Vasilyev authored
Install a.out and libsignal_file.so to the remote target if necessary.
-
Ramkumar Ramachandra authored
Address a review comment post landing 63d8058e (LoopVectorize: guard appending InstsToScalarize; fix bug) to update a comment.
-
Dmitry Vasilyev authored
Target::Install() set 0700 permissions for the main executable file. Platform::Install() just copies permissions from the source. But the permission eFilePermissionsUserExecute is missing on the Windows host. A lot of tests failed in case of Windows host and Linux target because of this issue. There is no API to provide the exec flag. This patch set the permission eFilePermissionsUserExecute for all files installed via Platform::Install() from the Windows host. It fixes a lot of tests in case of Windows host and Linux target.
-
Andrew Sukach authored
Fixes #90162
-
Petr Kurapov authored
Following #90236, adding `select` to linalg as `arith.select`. No implicit type casting. OpDSL doesn't expose a type restriction for bool, but I saw no reason in adding it (put a separate symbolic type and check the semantics in the builder). --------- Co-authored-by:
Renato Golin <rengolin@systemcall.eu> Co-authored-by:
Maksim Levental <maksim.levental@gmail.com>
-
Dominik Steenken authored
This adds tests for some extended mnemonics of load, branch, and compare-and-trap instructions.
-
Simon Pilgrim authored
These are affected by upcoming support for AVG legalization
-
aengelke authored
There is no need for an ordered std::map and also no need to duplicate the section name, which is owned by the ELFSectionKey. Therefore, use a DenseMap instead and don't copy the string. As a further, minor performance optimization, avoid the hash table lookup in isELFGenericMergeableSection when the section name was just added. This slightly improves compilation performance in our application, where we occasionally compile many small object files.
-
Vyacheslav Levytskyy authored
This PR is to introduce support for 'spirv.Decorations' metadata node in SPIR-V Backend. See also https://github.com/KhronosGroup/SPIRV-LLVM-Translator/blob/main/docs/SPIRVRepresentationInLLVM.rst that describes `spirv.Decorations` as an important part of SPIRV-friendly LLVM IR.
-
Dmitry Vasilyev authored
Windows path is case insensitive. Tests `test_QMemTags_packets` and `test_qMemTags_packets` will use the same build dir and conflict. Added a suffix to resolve conflicts.
-
chuongg3 authored
-
Hari Limaye authored
This patch extends support for lowering the experimental.cttz.elts intrinsic to BRKB + CNTP instruction sequences, using this lowering for all legal predicate types. An unused parameter is also removed from some of the related regression tests.
-