- Jul 12, 2022
-
-
Paul Robinson authored
Also add a test to verify this difference in the PS4/PS5 ABIs, now that we have identified it.
-
Nico Weber authored
-
Alex Zinenko authored
Existing implementation of structured op splitting creates several affine.apply and affine.min operations in its subshape computation. As these shapes are further used in data slice extraction, this may lead to slice shapes being dynamic even when the original shapes and the splitting point are static. This is particularly visible when splitting is combined with further subsetting transformations such as tiling. Use composition and folding more aggressively in splitting to avoid this. In particular, introduce a `createComposedAffineMin` function that the affine map used in "min" with the maps used by any `affine.apply` that may be feeding the operands to the "min". This enables production of more static shapes. Also introduce a `createComposedFoldedAffineApply` function that combines the existing `createComposedAffineApply` with in-place folding to propagate constants produced by zero-input affine maps. Using these when splitting allows the subsequent canonicalizer pass to recover static shapes for structured ops. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D129379
-
Nico Weber authored
This was promised 5 years ago in https://reviews.llvm.org/D32796, let's do it. Both flags are still accepted. No behavior change except for which form shows up in --help output and in dumps of internal state (such as with RC_DEBUG_OPTIONS). Differential Revision: https://reviews.llvm.org/D129226
-
Igor Kudrin authored
Differential Revision:
-
Thomas Raoux authored
This allows vectorizing linalg reductions without changing the operation order. Therefore this produce a valid vectorization even if operations are not associative. Differential Revision: https://reviews.llvm.org/D129535
-
David Sherwood authored
When calculating the cost of Instruction::Br in getInstructionCost we query PredicatedBBsAfterVectorization to see if there is a scalar predicated block. However, this meant that the decisions being made for a given fixed-width VF were affecting the cost for a scalable VF. As a result we were returning InstructionCost::Invalid pointlessly for a scalable VF that should have a low cost. I encountered this for some loops when enabling tail-folding for scalable VFs. Test added here: Transforms/LoopVectorize/AArch64/sve-tail-folding-cost.ll Differential Revision: https://reviews.llvm.org/D128272
-
Simon Pilgrim authored
[DAG] SimplifyDemandedBits - AND/OR/XOR - attempt basic knownbits simplifications before calling SimplifyMultipleUseDemandedBits Noticed while investigating the SystemZ regressions in D77804, prefer handling the knownbits analysis/simplification in the bitop nodes directly before falling back to SimplifyMultipleUseDemandedBits
-
Dawid Jurczak authored
The goal of this change is fixing most of compile time slowdown seen after a630ea30 commit on lencod and sqlite3 benchmarks. There are 3 improvements included in this patch: 1. In getNumOperands when possible get value directly from SmallNumOps. 2. Inline getLargePtr by moving its definition to header. 3. In TBAAStructTypeNode::getField get all operands once instead taking operands in loop one after one. Differential Revision: https://reviews.llvm.org/D129468
-
Alex Zinenko authored
The existing implementation of the TilingInterface for Linalg ops was not modifying the `linalg.index` ops contained within other Linalg ops (they need to be summed up with the values of respective tile loop induction variables), which led to the interface-based tiling being incorrect for any Linalg op with index semantics. In the process, fix the function performing the index offsetting to use the pattern rewriter API instead of RAUW as it is being called from patterns and may mess up the internal state of the rewriter. Also rename the function to clearly catch all uses. Depends On D129365 Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D129366
-
Alex Zinenko authored
A recent commit introduced helper functions with semantically meaningful names to populate the lists of memory effects in transform ops, use them whenever possible. Depends On D129287 Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D129365
-
Alex Zinenko authored
Introduce a structured transform op that emits IR computing the multi-tile sizes with requested parameters (target size and divisor) for the given structured op. The sizes may fold to arithmetic constant operations when the shape is constant. These operations may then be used to call the existing tiling transformation with a single non-zero dynamic size (i.e. perform strip-mining) for each of the dimensions separately, thus achieving multi-size tiling with optional loop interchange. A separate test exercises the entire script. Depends On D129217 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D129287
-
Corentin Jabot authored
Introduce an off-by default `-Winvalid-utf8` warning that detects invalid UTF-8 code units sequences in comments. Invalid UTF-8 in other places is already diagnosed, as that cannot appear in identifiers and other grammar constructs. The warning is off by default as its likely to be somewhat disruptive otherwise. This warning allows clang to conform to the yet-to be approved WG21 "P2295R5 Support for UTF-8 as a portable source file encoding" paper. Reviewed By: aaron.ballman, #clang-language-wg Differential Revision: https://reviews.llvm.org/D128059
-
Alex Zinenko authored
Extend the definition of the Tile structured transform op to enable it accepting handles to operations that produce tile sizes at runtime. This is useful by itself and prepares for more advanced tiling strategies. Note that the changes are relevant only to the transform dialect, the tiling transformation itself already supports dynamic sizes. Depends On D129216 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D129217
-
Muhammad Omair Javaid authored
This patch adds watchpoint catagory decorator to watchpoint dependent tests in TestCompletion.py.
-
Joseph Huber authored
Normally we do not link the device libraries if the user passed `nogpulib` we do this for the standard bitcode library. This behaviour was not added when using the static library for LTO, causing it to always be linked in. This patch fixes that. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D129534
-
Joseph Huber authored
Summary: We use a static assert to make sure that someone doesn't change the size of an argument struct without properly updating all the other logic. This originally only checked the size on a 64-bit system with 8-byte pointers, causing builds on 32-bit systems to fail. This patch allows either pointer size to work. Fixes #56486
-
Peixin Qiao authored
The reference and description is missed before. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D129437
-
Muhammad Omair Javaid authored
This patch fixes NativePDB/local-variables.cpp test for AArch64 Windows. There are two changes: 1) Replace function breakpoint with line breakpoint required due to pr56288 2) Adjust "target modules dump ast" test as the output was slightly different on AArch64/Windows.
-
Nikita Popov authored
When performing a !nonnull load from uninitialized memory, we should preserve the nonnull assume just like in all other cases. We already do this correctly in the generic mem2reg code, but don't handle this case when using the optimized single-block implementation. Make sure that the optimized implementation exhibits the same behavior as the generic implementation.
-
Aaron Ballman authored
C++20 deprecated ATOMIC_FLAG_INIT thinking it was deprecated in C when it wasn't. It is expected to be undeprecated in C++23 as part of LWG3659 (https://wg21.link/LWG3659), which is currently Tentatively Ready. This handles the case where the user includes <stdatomic.h> in C++ code in a freestanding compile mode. The corollary libc++ changes are in 1544d1f9.
-
Nikita Popov authored
This shows a difference in behavior between the single block and the multi block case.
-
Vignesh Balasubramanian authored
commit: 51d3f421 failed due to missing python-pip om machine. Now the ompd gdb-plugin code will be skipped with a warning if pip is not available in the machine.
-
David M. Lary authored
This commit adds SBSection.GetAlignment(), and SBSection.alignment as a python property to lldb. Reviewed By: clayborg, JDevlieghere, labath Differential Revision: https://reviews.llvm.org/D128069
-
Pavel Labath authored
The patch didn't get proper attribution. Will recommit. This reverts commit 4135abca.
-
Pavel Labath authored
This commit adds SBSection.GetAlignment(), and SBSection.alignment as a python property to lldb. Reviewed By: clayborg, JDevlieghere, labath Differential Revision: https://reviews.llvm.org/D128069
-
David Green authored
These tests were using instructions that require feature predicates that were not enabled.
-
LLVM GN Syncbot authored
-
Konstantin Varlamov authored
- create the headers (but not include them from `<algorithm>`); - define the niebloid and its member functions with the right signatures (as no-ops); - make sure all the right headers are included that are required by each algorithm's signature; - update `CMakeLists.txt` and the module map; - create the test files with the appropriate synopses. The synopsis in `<algorithm>` is deliberately not updated because that could be taken as a readiness signal. The new headers aren't included from `<algorithm>` for the same reason. Differential Revision: https://reviews.llvm.org/D129549
-
Nikita Popov authored
InlineAsm constraint string verification can fail for many reasons, but used to always print a generic "invalid type for inline asm constraint string" message -- which is especially confusing if the actual error is unrelated to the type, e.g. a failure to parse the constraint string. Change the verify API to return an Error with a more specific error message, and print that in the IR parser.
-
Michael Buch authored
This member variable was removed a while ago in 44342735. It was previously used in materialization code paths that have since been removed. Nowadays, `m_object_pointer_type` gets set but not used anywhere. This patch simply removes all remaining instances of it and any supporting code. **Testing** * API tests pass Differential Revision: https://reviews.llvm.org/D129367
-
Alex Zinenko authored
Various typos and formatting fixes that make the generated documentation hard to follow.
-
Michael Buch authored
This patch adds a formatter for libcxx's `std::unordered_map` iterators. The implementation follows a similar appraoch to the `std::map` iterator formatter. I was hesistant about coupling the two into a common implementation since the libcxx layouts might change for one of the the containers but not the other. All `std::unordered_map` iterators are covered with this patch: 1. const/non-const key/value iterators 2. const/non-const bucket iterators Note that, we currently don't have a formatter for `std::unordered_map`. This patch doesn't change that, we merely add support for its iterators, because that's what Xcode users requested. One can still see contents of `std::unordered_map`, whereas with iterators it's less ergonomic. **Testing** * Added API test Differential Revision: https://reviews.llvm.org/D129364
-
Vignesh Balasubramanian authored
support for OpenMP programs. This is 5th of 6 patches started from https://reviews.llvm.org/D100181 This plugin code, when loaded in gdb, adds a few commands like ompd icv, ompd bt, ompd parallel. These commands create an interface for GDB to read the OpenMP runtime through libompd. Reviewed By: @dreachem Differential Revision: https://reviews.llvm.org/D100185
-
Alex Zinenko authored
This handle manipulation operation allows one to define a new handle that is associated with a the same payload IR operations N times, where N can be driven by the size of payload IR operation list associated with another handle. This can be seen as a sort of broadcast that can be used to ensure the lists associated with two handles have equal numbers of payload IR ops as expected by many pairwise transform operations. Introduce an additional "expensive" check that guards against consuming a handle that is assocaited with the same payload IR operation more than once as this is likely to lead to double-free or other undesired effects. Depends On D129110 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D129216
-
Konstantin Varlamov authored
- checking that the algorithm supports predicates returning a non-boolean type that's implicitly convertible to `bool`; - checking that predicates and/or projections are invoked using `std::invoke`. Differential Revision: https://reviews.llvm.org/D129414
-
Jay Foad authored
Verify the LiveStacks analysis after a pass that claims to preserve it, even if there are no further passes (apart from the verifier itself) that would use the analysis. Differential Revision: https://reviews.llvm.org/D129200
-
jacquesguan authored
This patch uses constFoldUnaryOpConditional to replace current folder in order to support constant dense. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D129459
-
Nikita Popov authored
visitInlineAsm() in SDAGBuilder was duplicating a lot of the code in ParseConstraints(), in particular all the logic to determine the operand value and constraint VT. Rely on the data computed by ParseConstraints() instead, and update its ConstraintVT implementation to match getCallOperandValEVT() more precisely.
-
Rosie Sumpter authored
Currently any legal predicate types will be pattern-matched when creating a PTEST instruction. This could be a problem in future since PTEST always uses the .B specifier for the operand, but it is not always guaranteed that the extra lanes of unpacked types (e.g. nxv4i1) are zero. This patch ensures the operands of PTEST are type nxv16i1, where the undef lanes are set to zero. Differential Revision: https://reviews.llvm.org/D129282/
-