- Apr 28, 2021
-
-
Sanjay Patel authored
I was investigating a seemingly unrelated improvement in demanded bits for shift-left, but that caused regressions on these tests because we were able to look through/eliminate the mask. https://alive2.llvm.org/ce/z/Ztdr22 define i8 @src(i32 %x, i32 %y, i32 %shift) { %and = and i32 %shift, 3 %conv = and i32 %x, 255 %shr = lshr i32 %conv, %and %sub = sub i32 8, %and %shl = shl i32 %y, %sub %or = or i32 %shr, %shl %conv2 = trunc i32 %or to i8 ret i8 %conv2 } define i8 @tgt(i32 %x, i32 %y, i32 %shift) { %x8 = trunc i32 %x to i8 %y8 = trunc i32 %y to i8 %shift8 = trunc i32 %shift to i8 %and = and i8 %shift8, 3 %conv2 = call i8 @llvm.fshr.i8(i8 %y8, i8 %x8, i8 %and) ret i8 %conv2 } declare i8 @llvm.fshr.i8(i8,i8,i8)
-
Sanjay Patel authored
-
Jessica Paquette authored
SelectionDAG has separate ISD opcodes for regular global values and thread-local global values, while GlobalISel does not. This combine was ported from SDAG directly without knowing that. As a result, it was running on TLS globals. This makes it so that `matchFoldGlobalOffset` doesn't match on TLS globals, and adds an assert to `selectTLSGlobalValue` to make sure that TLS globals never have offsets. Differential Revision: https://reviews.llvm.org/D101478
-
Philip Reames authored
-
Mike Urbach authored
Previously, this API would return the PyObjectRef, rather than the underlying PyOperation. Reviewed By: stellaraccident Differential Revision: https://reviews.llvm.org/D101416
-
Duncan P. N. Exon Smith authored
3d4f3a0d (https://reviews.llvm.org/D20586) avoided rescheduling a global value that was materialized first through a regular value, and then again through an alias. This commit catches the dual, avoiding rescheduling when the global value is first materialized through an alias. Differential Revision: https://reviews.llvm.org/D101419 Radar-Id: rdar://75752728
-
Philip Reames authored
Addresses a review comment from D101181
-
Arthur Eubanks authored
This reverts commit 9b0501ab. False positives reported in D100581.
-
Anirudh Prasad authored
[AsmParser][SystemZ][z/OS] Use updated framework in AsmLexer to accept special tokens as Identifiers - Previously, https://reviews.llvm.org/D99889 changed the framework in the AsmLexer to treat special tokens, if they occur at the start of the string, as Identifiers. - These are used by the MASM Parser implementation in LLVM, and we can extend some of the changes made in the previous patch to SystemZ. - In SystemZ, the special "tokens" referred to here are "_", "$", "@", "#". [_|$|@|#] are already supported as "part" of an Identifier. - The changes in this patch ensure that these special tokens, when they occur at the start of the Identifier, are treated as Identifiers. Reviewed By: abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D100959
-
Philip Reames authored
Straight forward extension to the recently added infrastructure which was pioneered with shl. This was originally posted as part of D99687, but split off for ease of review. (I also decided to exclude the unknown start sign case explicitly for simplicity of understanding.) Differential Revision: https://reviews.llvm.org/D101181
-
Louis Dionne authored
This might have helped align static_asserts originally, but it doesn't anymore since we use LIBCPP_STATIC_ASSERT.
-
Florian Hahn authored
SCEV does not look through non-header PHIs inside the loop. Such phis can be analyzed by adding separate accesses for each incoming pointer value. This results in 2 more loops vectorized in SPEC2000/186.crafty and avoids regressions when sinking instructions before vectorizing. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D101286
-
Craig Topper authored
This uses to be how predicates were handled prior to HwMode being added. When the Predicates were converted to a std::vector it significantly increased the cost of a compare in GenerateVariants. Since ListInit's are uniquified by tablegen, we can use a simple pointer comparison to check for identical lists. In order to store the HwMode, we now add a separate string to PatternToMatch. This will be appended separately to the predicate string in getPredicateCheck. A new getPredicateRecords is added to allow GlobalISel and getPredicateCheck to both get the sorted list of Records. GlobalISel was ignoring any HwMode predicates before and still is. There is one slight change here, ListInits with different predicate orders aren't sorted so the filtering in GenerateVariants might fail to detect two isomorphic patterns with different predicate orders. This doesn't seem to be happening in tree today. My hope is this will allow us to remove all the BitVector tracking in GenerateVariants that was making up for predicates beeing expensive to compare. There's a decent amount of heap allocations there on large targets like X86, AMDGPU, and RISCV. Differential Revision: https://reviews.llvm.org/D100691
-
Sanjay Patel authored
-
Martin Storsjö authored
The buildbots now have bash available in the path from the start. Differential Revision: https://reviews.llvm.org/D101436
-
Ryan Santhirarajan authored
The Neon vadd intrinsics were added to the ARMSIMD intrinsic map, however due to being defined under an AArch64 guard in arm_neon.td, were not previously useable on ARM. This change rectifies that. It is important to note that poly128 is not valid on ARM, thus it was extracted out of the original arm_neon.td definition and separated for the sake of AArch64. Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D100772
-
MaheshRavishankar authored
Canonicalizations for subtensor operations defaulted to use the rank-reduced version of the operation, but the cast inserted to get back the original type would be illegal if the rank was actually reduced. Instead make the canonicalization not reduce the rank of the operation. Differential Revision: https://reviews.llvm.org/D101258
-
Jonas Devlieghere authored
Add a flag to change dsymutil's behavior and force a static variable to keep its enclosing function. The test shows a situation where that could be useful. I'm not convinced this behavior makes sense as a default, which is why it's behind a flag. rdar://74918374 Differential revision: https://reviews.llvm.org/D101337
-
-
Joe Nash authored
Note, only src0 and src1 will be commuted if the isCommutable flag is set. This patch does not change that, it just makes it possible to commute src0 and src1 of some U/I/B vop3 instructions. This patch revises d35d8da7. It contains the commute opportunities excluding float insts Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D101474 Change-Id: I62938173d750453839f2457a3851661a29135faf
-
Alexander Belyaev authored
The current canonicalization did not remap operation results correctly and attempted to erase tiledLoop, which is incorrect if not all tensor results are folded.
-
Sam Clegg authored
Just like the in case for function and data symbols this is needed to support relocations in debug info sections which are allowed contains relocations against non-live symbols. The motivating use case is an object file that contains debug info that references `__stack_pointer` (a local symbol) but does not actually contain any uses of `__stack_pointer`. Fixes: https://github.com/emscripten-core/emscripten/issues/14025 Differential Revision: https://reviews.llvm.org/D101399
-
Mark de Wever authored
Before the script detected non-ASCII characters but let them pass. This fixes the issue. I had a way to solve the issue, during review @Quuxplusone suggested a better alternative. The patch has been changed to use this alternative. Intended failed builds: - Not updated generated files https://buildkite.com/llvm-project/libcxx-ci/builds/2822 - Not updated generated files and non-ASCII usage https://buildkite.com/llvm-project/libcxx-ci/builds/2835 - Non-ASCII usage https://buildkite.com/llvm-project/libcxx-ci/builds/2836 Reviewed By: #libc, Quuxplusone, curdeius Differential Revision: https://reviews.llvm.org/D101303
-
Craig Topper authored
-
Nico Weber authored
Reduces numbers of files built for clang-format from 575 to 449. Requires two small changes: 1. Don't use llvm::ExceptionHandling in LangOptions. This isn't even quite the right type since we don't use all of its values. Tweaks the changes made in: - https://reviews.llvm.org/D93215 - https://reviews.llvm.org/D93216 2. Move section name validation code added (long ago) in commit 30ba6743 out of libBasic into Sema and base the check on the triple. This is a bit less OOP-y, but completely in line with what we do in many other places in Sema. No behavior change. Differential Revision: https://reviews.llvm.org/D101463
-
Roman Lebedev authored
Note that we don't want to turn a partially-direct call into an indirect one, that will break ICP amongst other things.
-
Roman Lebedev authored
This is the pattern ICP produces. We shouldn't fold this back into an indirect call.
-
Florian Hahn authored
-
Valeriy Savchenko authored
-
Valeriy Savchenko authored
When searching for stores and creating corresponding notes, the analyzer is more specific about the target region of the store as opposed to the stored value. While this description was tweaked for constant and undefined values, it lacked in the most general case of symbolic values. This patch tries to find a memory region, where this value is stored, to use it as a better alias for the value. rdar://76645710 Differential Revision: https://reviews.llvm.org/D101041
-
Valeriy Savchenko authored
Since we can report memory leaks on one variable, while the originally allocated object was stored into another one, we should explain how did it get there. rdar://76645710 Differential Revision: https://reviews.llvm.org/D100852
-
Valeriy Savchenko authored
When reporting leaks, we try to attach the leaking object to some variable, so it's easier to understand. Before the patch, we always tried to use the first variable that stored the object in question. This can get very confusing for the user, if that variable doesn't contain that object at the moment of the actual leak. In many cases, the warning is dismissed as false positive and it is effectively a false positive when we fail to properly explain the warning to the user. This patch addresses the bigest issue in cases like this. Now we check if the variable still contains the leaking symbolic object. If not, we look for the last variable to actually hold it and use that variable instead. rdar://76645710 Differential Revision: https://reviews.llvm.org/D100839
-
Valeriy Savchenko authored
Allocation site is the key location for the leak checker. It is a uniqueing location for the report and a source of information for the warning's message. Before this patch, we calculated and used it twice in bug report and in bug report visitor. Such duplication is not only harmful performance-wise (not much, but still), but also design-wise. Because changing something about the end piece of the report should've been repeated for description as well. Differential Revision: https://reviews.llvm.org/D100626
-
David Candler authored
This patch changes the AArch32 crypto instructions (sha2 and aes) to require the specific sha2 or aes features. These features have already been implemented and can be controlled through the command line, but do not have the expected result (i.e. `+noaes` will not disable aes instructions). The crypto feature retains its existing meaning of both sha2 and aes. Several small changes are included due to the knock-on effect this has: - The AArch32 driver has been modified to ensure sha2/aes is correctly set based on arch/cpu/fpu selection and feature ordering. - Crypto extensions are permitted for AArch32 v8-R profile, but not enabled by default. - ACLE feature macros have been updated with the fine grained crypto algorithms. These are also used by AArch64. - Various tests updated due to the change in feature lists and macros. Reviewed By: lenary Differential Revision: https://reviews.llvm.org/D99079
-
Frederik Gossen authored
This reverts commit dca53610.
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D101449
-
Nicolas Vasilache authored
since the `async` keyword is reserved in python, the dialect is called async_dialect. Differential Revision: https://reviews.llvm.org/D101447
-
Roman Lebedev authored
Seems to break indirect call promotion, LTO/Resolution/X86/load-sample-prof-icp.ll fails. This reverts commit e57cf128.
-
Roman Lebedev authored
-
Roman Lebedev authored
-