- Jun 20, 2023
-
-
Florian Hahn authored
This reverts the revert commit 1797ab36. The recommitted version now checks the PostIncLoopSets for all fixups and returns nullptr if the result doesn't match for all fixups.
-
Jeffrey Byrnes authored
Differential Revision: https://reviews.llvm.org/D142782 Change-Id: Ibb95224f7885839e8b77a705f487f10b47a258a6
-
Benjamin Kramer authored
applyExtensions can load further dialects, invalidating the reference to the dialect pointer in the dialects DenseMap. Capture the pointer to prevent that from happening.
-
LLVM GN Syncbot authored
-
Jay Foad authored
Implement this optimization in SIInsertWaitcnts, where we already have information about whether there might be outstanding VMEM store instructions. This has the following advantages: - Correctly handles atomics-with-return. - Correctly handles call instructions. - Should be faster because it does not require running a separate pass. Differential Revision: https://reviews.llvm.org/D153279
-
- Jun 19, 2023
-
-
Kun Wu authored
Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D153188
-
Jeffrey Byrnes authored
Differential Revision: https://reviews.llvm.org/D143018 Change-Id: I3dc03787a3382c0c3fe6b869f869c2946f450874
-
Louis Dionne authored
-
Matt Arsenault authored
AMDGPUAttributor now handles this attribute with value merging, so delete the old approach which could only apply this to functions which did not set it, or cloned the function.
-
Matt Arsenault authored
-
Matt Arsenault authored
This will help enable a cleanup of simplifyFCmpInst
-
Krzysztof Parzyszek authored
The output assembly (textual) contains the instruction r29 = add(r29,#4294967136) The value 4294967136 is -160 when interpreted as a signed 32-bit integer, so it fits in the range of the immediate operand without a constant extender. The range check in HexagonInstrInfo was putting the operand value into an int variable, reporting no need for an extender. This resulted in a packet with 4 instructions, including the "add". The corresponding check in HexagonMCInstrInfo was using an int64_t variable, causing the range check to fail, and an extender to be emitted when lowering to MCInst, resulting in a packet with too many instructions.
-
Louis Dionne authored
-
Louis Dionne authored
This commit does a pass of clang-format over files in libc++ that don't require major changes to conform to our style guide, or for which we're not overly concerned about conflicting with in-flight patches or hindering the git blame. This roughly covers: - benchmarks - range algorithms - concepts - type traits I did a manual verification of all the changes, and in particular I applied clang-format on/off annotations in a few places where the result was less readable after than before. This was not necessary in a lot of places, however I did find that clang-format had pretty bad taste when it comes to formatting concepts. Differential Revision: https://reviews.llvm.org/D153140
-
Andrea Di Biagio authored
-
Nikita Popov authored
In this case we don't need to emit the comparison and select. This is papering over a weakness in CVP in that newly added instructions don't get revisited. If they were revisited, the icmp would be folded at that point. However, even without that it makes sense to handle this explicitly, because it avoids the need to insert freeze, which may prevent further analysis of the operation by LVI. Proofs: https://alive2.llvm.org/ce/z/quyBxp Fixes https://github.com/llvm/llvm-project/issues/63330.
-
Nikita Popov authored
-
Job Noorman authored
BOLT currently assumes (and asserts) that no two relocations can share the same offset. Although this is true in most cases, ELF has a feature called (not sure if this is an official term) composed relocations [1] where multiple relocations at the same offset are combined to produce a single value. For example, to support label subtraction (a - b) on RISC-V, two relocations are emitted at the same offset: - R_RISCV_ADD32 a + 0 - R_RISCV_SUB32 b + 0 which, when combined, will produce the value of (a - b). To support this in BOLT, first, RelocationSetType in BinarySection is changed to be a multiset in order to allow it to store multiple relocations at the same offset. Next, Relocation::emit() is changed to receive an iterator pair of relocations. In most cases, these will point to a single relocation in which case its behavior is unaltered by this patch. For composed relocations, they should point to all relocations at the same offset and the following happens: - A new method Relocation::createExpr() is called for every relocation. This method is essentially the same as the original emit() except that it returns the MCExpr without emitting it. - The MCExprs of relocations i and i+1 are combined using the opcode returned by the new method Relocation::getComposeOpcodeFor(). - After combining all MCExprs, the last one is emitted. Note that in the current patch, getComposeOpcodeFor() simply calls llvm_unreachable() since none of the current targets use composed relocations. This will change once the RISC-V target lands. Finally, BinarySection::emitAsData() is updated to group relocations by offset and emit them all at once. Note that this means composed relocations are only supported in data sections. Since this is the only place they seem to be used in RISC-V, I believe it's reasonable to only support them there for now to avoid further code complexity. [1]: https://www.sco.com/developers/gabi/latest/ch4.reloc.html Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D146546
-
Mark de Wever authored
Like yocto, zepto, zetta, and yotta. The new prefixes quecto, ronto, ronna, and quetta can't be implemented in a intmax_t. So their implementation does nothing. Implements - P2734R0 Adding the new SI prefixes Depends on D153192 Reviewed By: #libc, philnik Differential Revision: https://reviews.llvm.org/D153200
-
Mark de Wever authored
Implements part of: - P1614R2 The Mothership has Landed Reviewed By: #libc, H-G-Hristov, philnik Differential Revision: https://reviews.llvm.org/D153222
-
Mark de Wever authored
This FTM was introduced in P0553R4 Bit operations Which has been implemented since libc++ 9. This was noticed while working on D153192. Reviewed By: #libc, philnik Differential Revision: https://reviews.llvm.org/D153225
-
Nico Weber authored
lld/test/Unit/lit.site.cfg.py.in got cleaned up in the reland.
-
Mark de Wever authored
This updates: - The status tables - Feature test macros - New headers for modules The latter avoids forgetting about modules when implementing the feature in a new header. Reviewed By: #libc, philnik Differential Revision: https://reviews.llvm.org/D153192
-
Nicolas Vasilache authored
-
Nicolas Vasilache authored
This reverts commit aabea3d3. That commit had mistakenly squashed spurious changes in.
-
Nico Weber authored
-
Nico Weber authored
-
Nico Weber authored
The lld CL relanded in 6f2e92c1. This reverts commit d76b37e6.
-
David Green authored
For both CodeGen and CostModelling, this adds extran testing for the new lvm.vector.reduce.fmaximum and lvm.vector.reduce.fminimum intrinsics, as well as making sure there is test coverage for all the various cases.
-
Joe Nash authored
Patch eece6ba2 changed the src1 type of v_ldexp_f16 from i32 to i16. Though semantically src1 is an i16, the hardware reads this operand as an f16 type, which primarily enables floating point inline constants. Therefore this patch changes the operand type to f16. It maintains the current behavior where floating point source modifiers are not allowed on src1. SDWA sext modifier continues to be allowed. The test asm and disasm test changes in eece6ba2 are reverted, because the floating point inline constants are allowed. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D153169
-
Vladislav Dzhidzhoev authored
RFC https://discourse.llvm.org/t/rfc-dwarfdebug-fix-and-improve-handling-imported-entities-types-and-static-local-in-subprogram-and-lexical-block-scopes/68544 Similar to imported declarations, the patch tracks function-local types in DISubprogram's 'retainedNodes' field. DwarfDebug is adjusted in accordance with the aforementioned metadata change and provided a support of function-local types scoped within a lexical block. The patch assumes that DICompileUnit's 'enums field' no longer tracks local types and DwarfDebug would assert if any locally-scoped types get placed there. Authored-by:
Kristina Bessonova <kbessonova@accesssoftek.com> Differential Revision: https://reviews.llvm.org/D144006 Depends on D144005
-
Roger Ferrer Ibanez authored
In D152070 we added many new intrinsic types required for the RISC-V Vector Extension. This was crashing when loading the AST as those types are intrinsically added to the AST (they don't come from the disk). The total number required now by clang exceeds 400 so increasing the value to 500 solves the problem. This value was already increased in D92715 but I assume this has some impact on the on-disk format. Also add a static assert to avoid this happening again in the future. Differential Revision: https://reviews.llvm.org/D153111
-
Florian Hahn authored
Add unit test triggering an assertion with abfeda5a.
-
Nicolas Vasilache authored
-
Nicolas Vasilache authored
Restriction to ModuleOp is ancient and unnecessarily restrictive.
-
Louis Dionne authored
This makes it such that new.cpp contains only the definitions of operator new and operator delete, like its libc++abi counterpart. Differential Revision: https://reviews.llvm.org/D153136
-
Nikita Popov authored
Avoid inserting the freeze if not necessary, as this allows LVI to continue reasoning about the expression.
-
Nikita Popov authored
-
Alexandros Lamprineas authored
After each iteration of the function specializer, constant stack values are promoted to constant globals in order to enable recursive function specialization. This should also be done once before running the specializer. Enables specialization of _QMbrute_forcePdigits_2 from SPEC2017:548.exchange2_r. Differential Revision: https://reviews.llvm.org/D152799
-
Adrian Munera authored
This patch implements the "__kmp_print_tdg_dot" function, that prints a task dependency graph into a dot file containing the tasks and their dependencies. It is activated through a new environment variable "KMP_TDG_DOT" Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D150962
-