- Apr 22, 2024
-
-
AtariDreams authored
It turns out that if any of the operations can be zero, and neither of the operands can be proven to be positive, it is possible for smax to be zero, and KnownBits cannot prove otherwise even with KnownBits::smax. In fact, proving it based on the KnownBits itself at that point without increasing the depth is actually, provably impossible. Same with smin. This covers all the possible cases and is proven to be complete.
-
pvanhout authored
-
Yingwei Zheng authored
This patch folds fabs over select if it is beneficial. I also tried other interger/fp intrinsics. Only handling fabs shows benefit to some real-world applications.
-
martinboehme authored
Reverts llvm/llvm-project#89213 This is causing buildbot failures.
-
martinboehme authored
-
Pierre van Houtryve authored
Allow targets to implement custom module splitting logic for --lto-partitions, see #89245 https://discourse.llvm.org/t/rfc-lto-target-specific-module-splittting/77252
-
donald chen authored
This patch adds support for consumer fusion to the tiling interface, and implements fuse consumers on FuseIntoContainingOp. - Add interface method 'getIterDomainTilePositionFromOperandPosition' to tiling interface which get iteration domain position from operand position. - Add interface method 'getTiledImplementationFromOperandPosition' to tiling interface which generate tiled implementation according to operand position. - Implemented the above two methods and supported consumer fusion for FuseIntoContainingOp. Signed-off-by: Donald Chen
-
Freddy Ye authored
This resolves issue #88501.
-
Craig Topper authored
-
- Apr 21, 2024
-
-
Kazu Hirata authored
We don't need to create these instances of ArrayRef because ConstantDataVector::get takes ArrayRef, and ArrayRef can be implicitly constructed from C arrays.
-
Yingwei Zheng authored
Fixes #89516
-
David Green authored
Similar to #87934, this adds costs to the shuffles in a canonical LD3/LD4 pattern, which are represented in LLVM as deinterleaving-shuffle(load). This likely has less effect at the moment than the ST3/ST4 costs as instcombine will perform certain transforms without considering the cost.
-
Mehdi Amini authored
Reverts llvm/llvm-project#69267 this broke some bots.
-
Gaurav Shukla authored
This patch generalizes tensor.expand_shape and memref.expand_shape to consume the output shape as a list of SSA values. This enables us to implement generic reshape operations with dynamic shapes using collapse_shape/expand_shape pairs. The output_shape input to expand_shape follows the static/dynamic representation that's also used in `tensor.extract_slice`. Differential Revision: https://reviews.llvm.org/D140821 Co-authored-by:
Ramiro Leal-Cavazos <ramiroleal050@gmail.com>
-
cor3ntin authored
In a pack expression, if the id-expression is not valid, do no try to detect whether it is a pack as that would lead to a crash trying to print a recovery expression. Fixes #88929
-
Nikita Popov authored
Revert "[X86] X86LowerTileCopy: Find dead register to use to prevent save-reload of tile register (#83628)" This reverts commit 34acbb38. This change causes major compile-time regressions.
-
Timm Bäder authored
To accomodate for recent changes in array index calculations.
-
zhongyunde 00443407 authored
foldFDivPowDivisor can address A / powi(x, y) to A * powi(x, -y), while for small const value y, for example y=2, the instcombine will transform powi(x, 2) to fmul x, x, so it is not optimal for A / powi(x, 2). Fix https://github.com/llvm/llvm-project/issues/77171
-
zhongyunde 00443407 authored
Since PR86428, foldPowiReassoc is called by both FMul and FDiv, as the optimization of FDiv is placed after the FMul, so now it is correct we don't add the checking of FDiv for powi(X, Y) / X. But, we may add more matching scenarios later, so add the checking opcode explicitly is easier to understand.
-
Congcong Cai authored
-
Craig Topper authored
-
Kazu Hirata authored
The call stack table has a constant key length, so we don't need to serialize or deserialize it for every key-data pair. Omitting the key length saves 0.64% of the indexed MemProf file size. Note that it's OK to change the format because Version2 is still under development.
-
Abhishek Kulkarni authored
The Python bindings generated for "async" dialect didn't include any of the "async" dialect ops. This PR fixes issues with generation of Python bindings for "async" dialect and adds a test case to use them.
-
AtariDreams authored
-
Aiden Grossman authored
This reverts commit f2931182. This was again causing buildbot failures. #83962 has been updated with the new failures, notifying the buildbot maintainers that they need to update their bots.
-
Vassil Vassilev authored
Original commit message: " Clang's CodeGen is designed to work with a single llvm::Module. In many cases for convenience various CodeGen parts have a reference to the llvm::Module (TheModule or Module) which does not change when a new module is pushed. However, the execution engine wants to take ownership of the module which does not map well to CodeGen's design. To work this around we clone the module and pass it down. With some effort it is possible to teach CodeGen to ask the CodeGenModule for its current module and that would have an overall positive impact on CodeGen improving the encapsulation of various parts but that's not resilient to future regression. This patch takes a more conservative approach and keeps the first llvm::Module empty intentionally and does not pass it to the Jit. That's also not bullet proof because we have to guarantee that CodeGen does not write on the blueprint. However, we have inserted some assertions to catch accidental additions to that canary module. This change will fixes a long-standing invalid memory access reported by valgrind when we enable the TBAA optimization passes. It also unblock progress on https://github.com/llvm/llvm-project/pull/84758. " This patch reverts adc4f623 and removes the check of `named_metadata_empty` of the first llvm::Module because on darwin clang inserts some harmless metadata which we can ignore.
-
Vassil Vassilev authored
This reverts commit ca090452 and 1faf3148 because it broke a darwin bot.
-
Kazu Hirata authored
This patch fixes: clang/lib/Interpreter/IncrementalParser.cpp:214:29: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move] clang/lib/Interpreter/IncrementalParser.cpp:232:22: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move]
-
Kazu Hirata authored
The comment being deleted in this patch is not correct. We already construct an instance of RecordWriterTrait with Version. This patch teaches the constructor of RecordWriterTrait to accept Schema. While I am at it, this patch makes Version a private variable.
-
Vassil Vassilev authored
Clang's CodeGen is designed to work with a single llvm::Module. In many cases for convenience various CodeGen parts have a reference to the llvm::Module (TheModule or Module) which does not change when a new module is pushed. However, the execution engine wants to take ownership of the module which does not map well to CodeGen's design. To work this around we clone the module and pass it down. With some effort it is possible to teach CodeGen to ask the CodeGenModule for its current module and that would have an overall positive impact on CodeGen improving the encapsulation of various parts but that's not resilient to future regression. This patch takes a more conservative approach and keeps the first llvm::Module empty intentionally and does not pass it to the Jit. That's also not bullet proof because we have to guarantee that CodeGen does not write on the blueprint. However, we have inserted some assertions to catch accidental additions to that canary module. This change will fixes a long-standing invalid memory access reported by valgrind when we enable the TBAA optimization passes. It also unblock progress on https://github.com/llvm/llvm-project/pull/84758.
-
Timm Bäder authored
This is closer to that the current interpreter does. It also fixes diagnostics in a case I was looking into. Unfortunately, this is not possible to test right now since it requires a large array and we don't implement array fillers yet.
-
Théo Degioanni authored
-
- Apr 20, 2024
-
-
David Green authored
-
David Green authored
-
Farzon Lotfi authored
- `clang/lib/CodeGen/CGBuiltin.cpp` - Add a generic mull add implementation. Make DXIL implementation tied to target. resolves #88944
-
Haohai Wen authored
InstCombine may invert branch condition and profile metadata. In such case, BranchProbabilityAnalysis should also be updated.
-
Congcong Cai authored
-
Karl-Johan Karlsson authored
These tests just don't check the output written to the current directory. The current directory may be write protected e.g. in a sandboxed environment. The Testcases that use -emit-llvm and -verify only care about stdout/stderr and are in this patch changed to use -emit-llvm-only to avoid writing to an output file. The verify-inlineasmbr.mir testcase that also only care about stdout/stderr is in this patch changed to throw away the output file and just write to /dev/null.
-
Mark de Wever authored
-
Alexander authored
`TemplateArgumentLocInventIterator` default constructor should not exists https://github.com/llvm/llvm-project/blob/3496927edcd0685807351ba88a7e2cfb006e1c0d/clang/lib/Sema/TreeTransform.h#L4742 because it doesn't and couldn't initialize `Self` member that is reference: https://github.com/llvm/llvm-project/blob/3496927edcd0685807351ba88a7e2cfb006e1c0d/clang/lib/Sema/TreeTransform.h#L4721-L4723 Instantiation of this constructor is always a compile-time error. Please note, that I didn't run any tests, because cannot imagine situation where this constructor can be properly used. There are no new tests for this fix for the same reason.
-