- Jan 07, 2022
-
-
Alexey Bataev authored
There is a bug in the reordering analysis stage. If the element with the given hash is not added to the map but has the same number of APOs and instructions with same parent, but different instruction opcode, it will be initalized with default values and then the counter is increased by 1. But the lane is not updated and default to 0 instead of the actual `Lane` value. It leads to the fact that the analysis is useless in many cases and default to lane 0 instead of actual lane with the minimum amount of APO operands. Differential Revision: https://reviews.llvm.org/D116690
-
Pavel Labath authored
It conflicts with the summary for BOOL * (aka signed char *). This partially reverts D112709.
-
MaheshRavishankar authored
`tensor.collapse_shape` op when fused with a consumer elementwise `linalg.generic` operation results in creation of tensor.expand_shape ops. In purely dynamic cases this can end up with a dynamic dimensions being expanded to more than one dynamic dimension. This is disallowed by the semantics of `tensor.expand_shape` operation. (While the transformation is itself correct, its a gap in the specification of `tensor.expand_shape` that is the issue). So disallow fusions which result in such a pattern. Differential Revision: https://reviews.llvm.org/D116703
-
Stanislav Mekhanoshin authored
This is needed for the next patch which will add more patterns to the same match. Differential Revision: https://reviews.llvm.org/D116194
-
Daniel Kiss authored
This reverts commit f903c850.
-
Nikolas Klauser authored
Implement P1425R4 Reviewed By: Quuxplusone, #libc, Mordante Spies: Mordante, jloser, libcxx-commits, arichardson Differential Revision: https://reviews.llvm.org/D115977
-
Nikolas Klauser authored
-
Andrew Browne authored
Reviewed By: morehouse Differential Revision: https://reviews.llvm.org/D116704
-
Colin LeMahieu authored
-
David Green authored
This adds some AArch64 specific smul_with_overflow and umul_with_overflow costs, overriding the default costs. The code generation for these mul with overflow intrinsics is usually better than the default expansion on AArch64. The costs come from https://godbolt.org/z/zEzYhMWqo with various types, or llvm/test/CodeGen/AArch64/arm64-xaluo.ll. Differential Revision: https://reviews.llvm.org/D116732
-
Arthur O'Dwyer authored
This should have been done in 6a6a80e8, but buildkite was down so I hadn't noticed. This brings this test file into line with several others in this directory.
-
Simon Pilgrim authored
dyn_cast<> can return null - use cast<> instead to assert the cast is valid before dereferencing the casted pointer. Fixes static-analyzer null dereference warning.
-
Brian Cain authored
-
Philip Reames authored
I am suspecting a bug around updates of loop info for unreachable exits, but don't have a test case. Running this locally on make check didn't reveal anything, we'll see if the expensive checks bots find it.
-
Andrzej Warzynski authored
This patch updates the `flang` bash scripts to differentiate between object files provided by the user and intermediate object files generated by the script. The latter are an "implementation detail" that should not be visible to the end user (i.e. deleted before the scripts exits). The former should be preserved. Fixes https://github.com/flang-compiler/f18-llvm-project/issues/1348 Differential Revision: https://reviews.llvm.org/D116590
-
LLVM GN Syncbot authored
-
Craig Topper authored
The 0 immediate can't be selected to vmsgtu.vi/vmsleu.vi by decrementing the immediate. To prevent his we had special patterns that provided alternate lowering for the 0 cases. This relied on tablegen prioritizing the 0 pattern over the sim5_plus1 range. This patch introduces simm5_plus1_nonzero that excludes 0. It also excludes the special case for vmsltu.vi since we can just use vmsltu.vx and let the 0 be selected to X0. This is an alternative to some of the changes in D116584. Reviewed By: Chenbing.Zheng, asb Differential Revision: https://reviews.llvm.org/D116723
-
Jake Egan authored
Include the value of `ZLIB_ROOT` in `LLVMConfig.cmake` so `FindZLIB` can pick it up. This fixes an issue where ZLIB is not found on AIX runtimes despite specifying `-DZLIB_ROOT`. Reviewed By: daltenty Differential Revision: https://reviews.llvm.org/D116235
-
Craig Topper authored
Function calls and compare instructions tend to cause sext.w instructions to be inserted. If we make good use of W instructions, these operations can often end up being redundant. We don't always detect these during SelectionDAG due to things like phis. There also some cases caused by failure to turn extload into sextload in SelectionDAG. extload selects to LW allowing later sext.ws to become redundant. This patch adds a pass that examines the input of sext.w instructions trying to determine if it is already sign extended. Either by finding a W instruction, other instructions that produce a sign extended result, or looking through instructions that propagate sign bits. It uses a worklist and visited set to search as far back as necessary. Reviewed By: asb, kito-cheng Differential Revision: https://reviews.llvm.org/D116397
-
Evgeny Mandrikov authored
See https://wg21.link/cwg2237 Reviewed By: shafik, dexonsmith Differential Revision: https://reviews.llvm.org/D115355
-
Craig Topper authored
The zextload hook is only used to determine whether to insert a zero_extend or any_extend for narrow types leaving a basic block. Returning true from this hook tends to cause any load whose output leaves the basic block to become an LWU instead of an LW. Since we tend to prefer sexts for i32 compares on RV64, this can cause extra sext.w instructions to be created in other basic blocks. If we use LW instead of LWU this gives the MIR pass from D116397 a better chance of removing them. Another option might be to teach getPreferredExtendForValue in FunctionLoweringInfo.cpp about our preference for sign_extend of i32 compares. That would cause SIGN_EXTEND to be chosen for any value used by a compare instead of using the isZExtFree heuristic. That will require code to convert from the llvm::Type* to EVT/MVT as well as querying the type legalization actions to get the promoted type in order to call TargetLowering::isSExtCheaperThanZExt. That seemed like many extra steps when no other target wants it. Though it would avoid us needing to lean on the MIR pass in some cases. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D116567
-
Craig Topper authored
Pre-work for a future change that will use these opcodes with other rounding modes. Differential Revision: https://reviews.llvm.org/D116724
-
Nikita Popov authored
Explicitly check the load/store value type, because this is no longer implicitly checked through the pointer type.
-
Simon Pilgrim authored
Avoids static-analyzer null dereference warnings.
-
Matt Arsenault authored
Fixes verifier error when writing MIR tests that didn't have phis to begin with.
-
- Jan 06, 2022
-
-
Matthias Springer authored
This change simplifies BufferizableOpInterface and other functions. Overall, the API will get smaller: Functions related to custom IR traversal are deleted entirely. This will makes it easier to write BufferizableOpInterface implementations. This is also in preparation of unifying Comprehensive Bufferize and core bufferization. While Comprehensive Bufferize could theoretically maintain its own IR traversal, there is no reason to do so, because all bufferize implementations in BufferizableOpInterface have to support partial bufferization anyway. And we can share a larger part of the code base between the two bufferizations. Differential Revision: https://reviews.llvm.org/D116448
-
David Goldman authored
This reverts commit 37be7488/ relands https://reviews.llvm.org/D116417 now that the internal issue has been fixed.
-
Jan Svoboda authored
-
Matthias Springer authored
This is mostly for documentation purposes: Passing the object as a const reference signifies that analysis decisions cannot be changed after the analysis. Differential Revision: https://reviews.llvm.org/D116742
-
Nikolas Klauser authored
Reformat `<__filesystem/operations.h>` Reviewed By: Quuxplusone, #libc, ldionne Spies: ldionne, libcxx-commits Differential Revision: https://reviews.llvm.org/D116234
-
Simon Pilgrim authored
Provides an early-out if we fail to find an AllocaInst, and avoids a static analyzer warning about null dereferencing.
-
Simon Pilgrim authored
-
Matthias Springer authored
This does not work if BufferizationState is passed around as a const reference in most places. Differential Revision: https://reviews.llvm.org/D116741
-
Vy Nguyen authored
(parial)fixes PR/53026 Differential Revision: https://reviews.llvm.org/D116718
-
Alexey Bataev authored
-
Alexey Bataev authored
-
Nikita Popov authored
This enforces the LangRef change from D116531 in the Verifier, now that clang and tests have been updated.
-
Simon Pilgrim authored
Fix static analysis warning by using cast<> instead of dyn_cast<> as both isa<> and isGuaranteedToExecuteForEveryIteration expect a non-null Instruction pointer.
-
Nikita Popov authored
This is the autoupgrade part of D116531. If old bitcode is missing the elementtype attribute for indirect inline asm constraints, automatically add it. As usual, this only works when upgrading in typed mode, we haven't figured out upgrade in opaque mode yet.
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D116739
-