- Jun 01, 2023
-
-
Nikita Popov authored
-
Petr Hosek authored
The existing BOLT install targets are broken on Windows becase they don't properly handle the output extension. We cannot use the existing LLVM macros since those make assumptions that don't hold for BOLT. This change instead implements custom macros following the approach used by Clang and LLD. Differential Revision: https://reviews.llvm.org/D151595
-
Jay Foad authored
-
Nikita Popov authored
Serves the dual purpose of avoiding an extra InstCombine iteration for the DL-aware folding and removing one icmp constexpr use.
-
Zibi Sarbinowski authored
[z/OS] Disable pr59765-modules-global-ctor-dtor.cppm Reviewed By: SeanP Differential Revision: https://reviews.llvm.org/D151828
-
Haojian Wu authored
-
Paulo Matos authored
Disable conversion of funnel shifts (fshl/fshr) into rotates unless one of the operands is known to be a constant value. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D150670
-
Nikita Popov authored
This reverts commit 559d47a1. Caused failure on sanitizer-aarch64-linux-bootstrap-ubsan: clang++: /b/sanitizer-aarch64-linux-bootstrap-ubsan/build/llvm-project/llvm/lib/Transforms/Utils/SCCPSolver.cpp:442: llvm::ValueLatticeElement &llvm::SCCPInstVisitor::getValueState(llvm::Value *): Assertion `!V->getType()->isStructTy() && "Should use getStructValueState"' failed.
-
Nikita Popov authored
Explicitly remove the old add instruction, so we don't need a separate InstCombine iteration to DCE it.
-
Haojian Wu authored
-
Nikita Popov authored
FoldSetCC() returns UNDEF in a number of cases. However, the SetCC result must follow BooleanContents. Unless the type is a pre-legalization i1 or we have UndefinedBooleanContents, the use of UNDEF will not uphold the requirement that the top bits are either zero or match the low bit. In such cases, return zero instead. Fixes https://github.com/llvm/llvm-project/issues/63055. Differential Revision: https://reviews.llvm.org/D151883
-
Haojian Wu authored
-
Valentin Clement authored
Add support for the * operation in OpenACC lowering. Support is added for the types currently supported. Depends on D151564 Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D151565
-
Valentin Clement authored
Add initial support to lower reduction clause to its representation in MLIR. This patch adds support for addition of integer and real scalar types. Other operators and types will be added with follow up patches. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D151564
-
Haojian Wu authored
-
Mikhail Gudim authored
The freeze instruction has not been handled by SCCPInstVisitor. This patch adds SCCPInstVisitor::visitFreezeInst(FreezeInst &I) method to handle freeze instructions. Differential Revision: https://reviews.llvm.org/D151659
-
Haojian Wu authored
IncludeStructure::RecordHeaders.
-
Jay Foad authored
-
Guillaume Chatelet authored
Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D151875
-
Haojian Wu authored
-
Nikita Popov authored
-
Igor Kirillov authored
This patch allows us to gain all the benefits provided by LoopLoadElimination pass to descending loops. Differential Revision: https://reviews.llvm.org/D151448
-
Joseph Huber authored
The linker wrapper performs its own very basic symbol resolution for the purpose of supporting standard static library semantics. We do this here because the Nvidia `nvlink` wrapper does not support static linking and we have some offloading specific extensions. Currently, we always place symbols in the "table" even if they aren't extracted. This caused the logic to fail when many files were used that referenced the same undefined variable. This patch changes the pass to only add the symbols to the global "table" if the file is actually extracted. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D151839
-
Simon Pilgrim authored
Only uses port2+3 for agen, and was missing port4 for the actual store Noticed while investigating the skylake vs icelake diffs for Issue #62602
-
Nimish Mishra authored
Verification of support for lowering private/firstprivate clauses on unstructured sections. Differential Revision: https://reviews.llvm.org/D145352 Reviewed By: TIFitis
-
Ritanya B Bharadwaj authored
Initial support for OpenMP 5.0 declare target "as if" behavior for "initializer expressions". OpenMP 5.0, 2.12.7 declare target. Reviewed By: Alexey Differential Revision: https://reviews.llvm.org/D146418
-
David Green authored
i1 inserts will need an extra cset, and i1 extracts need a cmp (or tst) in order to be used. This increase the cost of them a little to account for those extra instructions. https://godbolt.org/z/3c5z4G7Mh Differential Revision: https://reviews.llvm.org/D151189
-
Nikita Popov authored
We need to add the replaced instruction itself to the worklist as well. We want to remove the old instructions, but can't easily do so directly, as the icmp is also one of the users and we need to retain it until the fold has finished.
-
Antonio Abbatangelo authored
Adds a dynamic stack alignment to functions under the interrupt call convention on x86-32. This fixes the issue where the stack can be misaligned on entry, since x86-32 makes no guarantees about the stack pointer position when the interrupt service routine is called. The alignment is done by overriding X86RegisterInfo::shouldRealignStack, and by setting the correct alignment in X86FrameLowering::calculateMaxStackAlign. This forces the interrupt handler to be dynamically aligned, generating the appropriate `and` instruction in the prologue and `lea` in the epilogue. The `no-realign-stack` attribute can be used as an opt-out. Fixes #26851 Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D151400
-
Timm Bäder authored
Our comparison opcodes always produce a Boolean value and push it on the stack. However, the result of such a comparison in C is int, so the later code expects an integer value on the stack. Work around this problem by casting the boolean value to int in those cases. This is not ideal for C however. The comparison is usually wrapped in a IntegerToBool cast anyway. Differential Revision: https://reviews.llvm.org/D149645
-
Nikita Popov authored
Use replaceInstUsesWith() rather than plain RAUW to make sure the old instructions are added back to the worklist for DCE.
-
zhuna authored
Now, if the offset overflow happens, we just silently ignore it. We will generate a bad dwp file, which will crash the gdb or make it undefined behavior, and hard to address the root cause. So, we need to produce some messages if overflow happens. Reviewed By: ayermolo, dblaikie, steven.zhang Differential Revision: https://reviews.llvm.org/D144565
-
David Green authored
This expands the reduction cost of i1 and/or/xor, so that larger type sizes get handled by the existing code. For i1 reductions - and will use maxv, or will use minv and xor will use addv, plus the cost of legalizing the type for larger vectors using and/or/xor. The i1 vectors will be legalized to higher width integers (say v16i8), which this overrides the cost of. As with all i1 vectors there is a chance that the types the i1 vector is created with and how it is used will not match, introducing extra extends that are not necessarily costmodelled. https://godbolt.org/z/6Gc9K6b7T Differential Revision: https://reviews.llvm.org/D151184
-
Andrzej Warzynski authored
This patch enables specifying scalable tile sizes when using the Transform dialect to drive tiling, e.g.: ``` %1, %loop = transform.structured.tile %0 [[4]] ``` This is implemented by extending the TileOp with a dedicated attribute for "scalability" and by updating various parsing hooks. At the moment, only the trailing tile size can be scalable. The following is not yet supported: ``` %1, %loop = transform.structured.tile %0 [[4], [4]] ``` This change is a part of larger effort to enable scalable vectorisation in Linalg. See this RFC for more context: * https://discourse.llvm.org/t/rfc-scalable-vectorisation-in-linalg/ Differential Revision: https://reviews.llvm.org/D150944
-
Nikita Popov authored
Make sure the old operand is added back to the worklist for DCE.
-
Petr Hosek authored
This reverts commit f99a7d3e since it broke the bolt-aarch64-ubuntu-clang-shared bot.
-
Balázs Kéri authored
[clang][analyzer] Merge apiModeling.StdCLibraryFunctions and StdCLibraryFunctionArgs checkers into one. Main reason for this change is that these checkers were implemented in the same class but had different dependency ordering. (NonNullParamChecker should run before StdCLibraryFunctionArgs to get more special warning about null arguments, but the apiModeling.StdCLibraryFunctions was a modeling checker that should run before other non-modeling checkers. The modeling checker changes state in a way that makes it impossible to detect a null argument by NonNullParamChecker.) To make it more simple, the modeling part is removed as separate checker and can be only used if checker StdCLibraryFunctions is turned on, that produces the warnings too. Modeling the functions without bug detection (for invalid argument) is not possible. The modeling of standard functions does not happen by default from this change on. Reviewed By: Szelethus Differential Revision: https://reviews.llvm.org/D151225
-
Nikita Popov authored
Make ValueTracking directly call the KnownBits shift helpers, which provides more precise results. Unfortunately, ValueTracking has a special case where sometimes we determine non-zero shift amounts using isKnownNonZero(). I have my doubts about the usefulness of that special-case (it is only tested in a single unit test), but I've reproduced the special-case via an extra parameter to the KnownBits methods. Differential Revision: https://reviews.llvm.org/D151816
-
Matthias Springer authored
Certain ExtractSliceOps, that do extract all elements from the destination, are treated like casts when looking for replacement ops. Such ExtractSliceOps are typically rank expansions. Differential Revision: https://reviews.llvm.org/D151804
-
Matthias Springer authored
Drop insert_slice rank expansions if they are directly followed by an inverse rank reduction. Differential Revision: https://reviews.llvm.org/D151800
-