- Mar 21, 2022
-
-
Aaron Puchert authored
After D108936, @llvm.smul.with.overflow.i64 was lowered to __multi3 instead of __mulodi4, which also doesn't exist on PowerPC 32-bit, not even with compiler-rt. Block it as well so that we get inline code. Because libgcc doesn't have __muloti4, we block that as well. Fixes #54460. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D122090
-
Kazu Hirata authored
-
- Mar 20, 2022
-
-
Mark de Wever authored
This is no longer needed. Reviewed By: #libc, philnik Differential Revision: https://reviews.llvm.org/D122099
-
Chen Zheng authored
-
esmeyi authored
This is the first patch to enable the XCOFF64 object writer. Currently only fileHeader and sectionHeaders are supported. Reviewed By: jhenderson, DiggerLin Differential Revision: https://reviews.llvm.org/D120861
-
Michel Weber authored
This patch improves the representation size of individual `IntegerRelation`s by calling the function `IntegerRelation::removeRedundantConstraints`. While this is only a slight optimization in the current version, it will be necessary for patches to come. Reviewed By: arjunp Differential Revision: https://reviews.llvm.org/D121989
-
Luo, Yuanke authored
Differential Revision: https://reviews.llvm.org/D119654
-
Shengchen Kan authored
This is not a NFC change b/c we add more instructions like IMUL16/32/64r, MOV16ao16 and MOV16rr_REV etc to the list. But I think it's reasonable. Reviewed By: Amir Differential Revision: https://reviews.llvm.org/D122063
-
Florian Hahn authored
-
Simon Pilgrim authored
Based on feedback from D122084
-
Simon Pilgrim authored
Split combineAddOrSubToADCOrSBB into wrapper (which handles ADDs with commuted args) and the real combine, which no longer has to account for commutation. I'm intending to extend combineAddOrSubToADCOrSBB to detect patterns other than just X86ISD::SETCC, so we need to detect all patterns without detecting them as part of a commutation swap.
-
Shengchen Kan authored
Non-duplicated comments are moved from X86Subtarget.h to X86.td. This is a follow-up patch for D120906.
-
Alisamar Husain authored
Added a line to `thread trace dump info` results which shows total number of instructions executed until now. Differential Revision: https://reviews.llvm.org/D122076
-
Shengchen Kan authored
-
Shengchen Kan authored
-
Shengchen Kan authored
To make them less like other feature functions. This is a follow-up patch for D121978.
-
Craig Topper authored
ComputePHILiveOutRegInfo assumes that constant incoming values to Phis will be zero extended if they aren't a legal type. To guarantee that we should zero_extend rather than any_extend constants. This fixes a bug for RISCV where any_extend of constants can be treated as a sign_extend. Differential Revision: https://reviews.llvm.org/D122053
-
Craig Topper authored
The code that inserts AssertZExt based on predecessor information assumes constants are zero extended for phi incoming values this allows AssertZExt to be created in blocks consuming a Phi. SelectionDAG::getNode treats any_extend of i32 constants as sext for RISCV. The code that creates phi incoming values in the predecessors creates an any_extend for the constants which then gets treated as a sext by getNode. This makes the AssertZExt incorrect and can cause zexts to be incorrectly removed. This bug was introduced by D105918 Differential Revision: https://reviews.llvm.org/D122052
-
Philip Reames authored
There are some slight changes to the test lines due to different cost threshold choices in the two command lines, but I don't believe these to be interesting the purpose of the tests.
-
Jacques Pienaar authored
Add targets for PDLL LSP server.
-
Philip Reames authored
The existing scheduling doesn't account for the scheduling restrictions implied by inalloca allocas combined with stacksave/stackrestore. This adds coverage including one currently miscompiling case.
-
Jon Chesterfield authored
Reconsidered, better to handle per-function state in the constructor as before. This reverts commit 98e474c1.
-
Will Dietz authored
This option tells CMake to add current source and binary directories to the include path for each directory[1]. Required include directories from build tree (for generated files) were previously added in `mlir_tablegen` but this was changed in 03078ec2 . These are still needed, however, for out-of-tree builds that don't build as part of LLVM (via LLVM_ENABLE_PROJECTS). Building as part of LLVM works regardless, AFAICT, because LLVM sets this option and so the MLIR build inherits it. FWIW, various other (in-tree) LLVM projects set this as well. And of course this fixes the out-of-tree mlir-by-itself build scenario I'm using. [1] https://cmake.org/cmake/help/latest/variable/CMAKE_INCLUDE_CURRENT_DIR.html Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D122088
-
River Riddle authored
These were removed, and the FIXME is no longer relevant.
-
Philip Reames authored
This fixes an active miscompile visible in the test changes. The basic problem is that the scheduling dependency graph didn't have any edges for control dependence within a single basic block. The result is that we could (and in some rare cases *did*) perform reorderings within a block which could introduce new undefined behavior along paths which didn't previously contain any. Impact wise, we have two major cases where control is not guaranteed to reach a later instruction in the block: may throw calls, and calls containing infinite loops. * The former case was mostly covered by the memory dependencies, and to trigger require a function which can throw, but not write to memory. In theory, such a case is possible, but not likely in practice. * The later case is likely more of an issue in practice. After this code was first written, we changed the IR semantics to allow well defined infinite loops without satisifying mustprogress. Even for C/C++ - which do imply mustprogress - recent changes to how we treat atomics (e.g. an atomic read does not always imply a write) could expose this issue. I'm a bit shocked we don't seem to have a bug report which hit this in real code actually. Compile time wise, this results in a single extra scan of the scheduling window in the common case. Since we stop scanning at the next instruction which isn't guaranteed to execute, no matter what order we traverse instructions in, we scan the block once. The exception to this is that when we extend the scheduling window downwards, we invalidate all dependencies, and thus rescan. So the potentially expensive case is when we a call in a big schedule window which is frequently extended. We could optimize this case (by caching the last instruction not guaranteeed to transfer execution and scanning only the extended window) and starting there), but I decided to leave the complexity until it mattered. That same case is already degenerate with memory dependences which is more expensive than the control dependence scan. We could also consider combining the memory dependence and control dependence sets to reduce memory usage, but since it complicates the code slightly and makes debugging a bit harder, I went with the simplest scheme for now. This was noticed while trying to understand the failures reported against D118538, but is not otherwise related to that change.
-
Tal Kedar authored
In order to allow compiling with -Werror=global-constructors with c++20 and above. Discussion: https://discourse.llvm.org/t/llvm-lib-support-signals-cpp-fails-to-compile-due-to-werror-global-constructors/61070 Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D122067
-
River Riddle authored
This support has never really worked well, and is incredibly clunky to use (it effectively creates two argument APIs), and clunky to generate (it isn't clear how we should actually expose this from PDL frontends). Treating these as just attribute arguments is much much cleaner in every aspect of the stack. If we need to optimize lots of constant parameters, it would be better to investigate internal representation optimizations (e.g. batch attribute creation), that do not affect the user (we want a clean external API). Differential Revision: https://reviews.llvm.org/D121569
-
River Riddle authored
This commit adds signature support to the language server, and initially supports providing help for: operation operands and results, and constraint/rewrite calls. Differential Revision: https://reviews.llvm.org/D121545
-
River Riddle authored
This commit adds code completion support to the language server, and initially supports providing completions for: Member access, attributes/constraint/dialect/operation names, and pattern metadata. Differential Revision: https://reviews.llvm.org/D121544
-
River Riddle authored
This adds support for documenting the top-level "symbols", e.g. patterns, constraints, rewrites, etc., within a PDLL file. Differential Revision: https://reviews.llvm.org/D121543
-
River Riddle authored
This adds support for providing information when hovering over operation names, variables, patters, constraints, and rewrites. Differential Revision: https://reviews.llvm.org/D121542
-
River Riddle authored
This commits adds a basic language server for PDLL to enable providing language features in IDEs such as VSCode. This initial commit only adds support for tracking definitions, references, and diagnostics, but followup commits will build upon this to provide more significant behavior. In addition to the server, this commit also updates mlir-vscode to support the PDLL language and invoke the server. Differential Revision: https://reviews.llvm.org/D121541
-
Florian Hahn authored
Update functions that previously took a loop pointer but only to get the pre-header. Instead, pass the block directly. This removes the requirement for the loop object to be created up-front.
-
Craig Topper authored
Rename hasCMPXCHG16B() to canUseCMPXCHG16B() to make it less like other feature functions. Add a similar canUseCMPXCHG8B() that aliases hasCX8() to keep similar naming. Differential Revision: https://reviews.llvm.org/D121978
-
Simon Pilgrim authored
-
Johannes Doerfert authored
With debug information enabled (-g) Clang will wrap the actual target region into a new function which is called from the "kernel". The problem is that the "kernel" is now basically a wrapper without all the things we expect. More importantly, if we end up asking for an AAKernelInfo for the "target region function" we might try to turn it into SPMD mode. That used to cause an assertion as that function doesn't have an appropriately named `_exec_mode` global. While the global is going away soon we still need to make sure to properly handle this case, e.g., perform optimizations reliably. Differential Revision: https://reviews.llvm.org/D122043
-
Itay Bookstein authored
Signed-off-by:Itay Bookstein <ibookstein@gmail.com>
-
Simon Pilgrim authored
-
Nikolas Klauser authored
These are the last™ changes to the tests for constexpr preparation. Reviewed By: Quuxplusone, #libc, Mordante Spies: Mordante, EricWF, libcxx-commits Differential Revision: https://reviews.llvm.org/D120951
-
Alisamar Husain authored
Differential Revision: https://reviews.llvm.org/D122073
-