- Dec 23, 2020
-
-
Evgeniy Brevnov authored
Current approach doesn't work well in cases when multiple paths are predicted to be "cold". By "cold" paths I mean those containing "unreachable" instruction, call marked with 'cold' attribute and 'unwind' handler of 'invoke' instruction. The issue is that heuristics are applied one by one until the first match and essentially ignores relative hotness/coldness of other paths. New approach unifies processing of "cold" paths by assigning predefined absolute weight to each block estimated to be "cold". Then we propagate these weights up/down IR similarly to existing approach. And finally set up edge probabilities based on estimated block weights. One important difference is how we propagate weight up. Existing approach propagates the same weight to all blocks that are post-dominated by a block with some "known" weight. This is useless at least because it always gives 50\50 distribution which is assumed by default anyway. Worse, it causes the algorithm to skip further heuristics and can miss setting more accurate probability. New algorithm propagates the weight up only to the blocks that dominates and post-dominated by a block with some "known" weight. In other words, those blocks that are either always executed or not executed together. In addition new approach processes loops in an uniform way as well. Essentially loop exit edges are estimated as "cold" paths relative to back edges and should be considered uniformly with other coldness/hotness markers. Reviewed By: yrouban Differential Revision: https://reviews.llvm.org/D79485
-
Aleksandr Platonov authored
This is follow up to D93393. Without this patch clangd takes the symbol definition from the static index if this definition was removed from the dynamic index. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D93683
-
ergawy authored
Adds rewrite patterns to convert select+cmp instructions into clamp instructions whenever possible. Support is added to convert: - FOrdLessThan, FOrdLessThanEqual to GLSLFClampOp. - SLessThan, SLessThanEqual to GLSLSClampOp. - ULessThan, ULessThanEqual to GLSLUClampOp. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D93618
-
mydeveloperday authored
https://bugs.llvm.org/show_bug.cgi?id=48539 Add support for Qt Translator Comments to reflow When reflown and a part of the comments are added on a new line, it should repeat these extra characters as part of the comment token. Reviewed By: curdeius, HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D93490
-
mydeveloperday authored
[clang-format] PR48535 clang-format Incorrectly Removes Space After C Style Cast When Type Is Not a Pointer https://bugs.llvm.org/show_bug.cgi?id=48535 using `SpaceAfterCStyleCast: true` ``` size_t idx = (size_t) a; size_t idx = (size_t) (a - 1); ``` is formatted as: ``` size_t idx = (size_t) a; size_t idx = (size_t)(a - 1); ``` This revision aims to improve that by improving the function which tries to identify a CastRParen Reviewed By: curdeius Differential Revision: https://reviews.llvm.org/D93626
-
Joseph Huber authored
-
David Penry authored
Adds ARMBankConflictHazardRecognizer. This hazard recognizer looks for a few situations where the same base pointer is used and then checks whether the offsets lead to a bank conflict. Two parameters are also added to permit overriding of the target assumptions: arm-data-bank-mask=<int> - Mask of bits which are to be checked for conflicts. If all these bits are equal in the offsets, there is a conflict. arm-assume-itcm-bankconflict=<bool> - Assume that there will be bank conflicts on any loads to a constant pool. This hazard recognizer is enabled for Cortex-M7, where the Technical Reference Manual states that there are two DTCM banks banked using bit 2 and one ITCM bank. Differential Revision: https://reviews.llvm.org/D93054
-
Simon Moll authored
Some member functions of class TargetTransformInfoImplBase in TargetTransformInfoImpl.h are marked const while others are not. Yet all of the should be marked const since they are just providing default TTI values. This patch fixes the inconsistency. Authored-by:
Jinzheng Tu <b1f6c1c4@gmail.com> Reviewed By: simoll Differential revision: https://reviews.llvm.org/D93573
-
Simon Moll authored
Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D93709
-
Alex Zinenko authored
LLVMType contains numerous static constructors that were initially introduced for API compatibility with LLVM. Most of these merely forward to arguments to `SpecificType::get` (MLIR defines classes for all types, unlike LLVM IR), while some introduce subtle semantics differences due to different modeling of MLIR types (e.g., structs are not auto-renamed in case of conflicts). Furthermore, these constructors don't match MLIR idioms and actively prevent us from making the LLVM dialect type system more open. Remove them and use `SpecificType::get` instead. Depends On D93680 Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D93681
-
Nathan James authored
This overload should be used for better diagnostics when parsing configurations. Now a failure to parse will list the filename (or <command-line>) instead of just `YAML`. Reviewed By: MyDeveloperDay Differential Revision: https://reviews.llvm.org/D93633
-
Adrian Kuegel authored
This reverts commit d3bf0bb1. This causes compilation in certain cases to fail. Reproducer TBD.
-
Christian Sigg authored
Reviewed By: ftynse, herhut Differential Revision: https://reviews.llvm.org/D93752
-
Alex Zinenko authored
Introduce a translation of OpenMP workshare loop construct to LLVM IR. This is a minimalist version to enable the pipeline and currently only supports static loop schedule (default in the specification) on non-collapsed loops. Other features will be added on per-need basis. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D92055
-
Christian Sigg authored
[mlir] NFC: Remove ConvertToLLVMPattern::getDataPtr(). All call sites use getStridedElementPtr() now. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D93751
-
Alex Zinenko authored
This was long overdue. Replace the outdated type syntax with the new syntax, and update the description of how memref load/stores are handled to reflect the latest changes in the implementation. Reviewed By: herhut Differential Revision: https://reviews.llvm.org/D93555
-
Sebastian Neubauer authored
Use getPtrBaseWithConstantOffset in selectFlatOffsetImpl to fold more vgpr+constant addresses. Differential Revision: https://reviews.llvm.org/D93692
-
ShihPo Hung authored
This patch defines vfwmacc, vfwnmacc, vfwmsc, vfwnmsac intrinsics and lower to V instructions. We work with @rogfer01 from BSC to come out this patch. Authored-by:
Roger Ferrer Ibanez <rofirrim@gmail.com> Co-Authored-by:
ShihPo Hung <shihpo.hung@sifive.com> Differential Revision: https://reviews.llvm.org/D93693
-
Georgii Rymar authored
Currently llvm-readelf might print "OS Specific/Processor Specific/<unknown>" hint when dumping the ELF file type. The patch teaches llvm-readobj to do the same. This fixes https://bugs.llvm.org/show_bug.cgi?id=40868 I am removing `Object/elf-unknown-type.test` test because it is not in the right place, it is outdated and very limited. The `readobj/ELF/file-types.test` checks the functionality much better. Differential revision: https://reviews.llvm.org/D93689
-
Zakk Chen authored
Define vmerge/vfmerge intrinsics and lower to V instructions. Include support for vector-vector vfmerge by vmerge.vvm. We work with @rogfer01 from BSC to come out this patch. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D93674
-
Evandro Menezes authored
Define the vfmin, vfmax IR intrinsics for the respective V instructions. Authored-by:
Roger Ferrer Ibanez <rofirrim@gmail.com> Co-Authored-by:
Evandro Menezes <evandro.menezes@sifive.com> Differential Revision: https://reviews.llvm.org/D93673
-
Arthur Eubanks authored
-
Kazu Hirata authored
The last use of the function was removed on Sep 30, 2017 in commit 9b926e90.
-
Thomas Lively authored
Introduce `Vec` records, each bundling all information related to a single SIMD lane interpretation. This lets TableGen definitions take a single Vec parameter from which they can extract information rather than taking multiple redundant parameters. This commit refactors all of the SIMD load and store instruction definitions to use the new `Vec`s. Subsequent commits will similarly refactor additional instruction definitions. Differential Revision: https://reviews.llvm.org/D93660
-
Kazu Hirata authored
-
Matt Arsenault authored
Returning int64_t was arbitrarily limiting for wide integer types, and the functions should handle the full generality of the IR. Also changes the full form which returns the originally defined vreg. Add another wrapper for the common case of just immediately converting to int64_t (arguably this would be useful for the full return value case as well). One possible issue with this change is some of the existing uses did break without conversion to getConstantVRegSExtVal, and it's possible some without adequate test coverage are now broken.
-
Nico Weber authored
It's an extension to ld64, but all the other ports have it, and someone asked for it in PR43721. While here, change the COFF help text to match the other ports. Differential Revision: https://reviews.llvm.org/D93491
-
Matt Arsenault authored
-
Matt Arsenault authored
-
ShihPo Hung authored
This patch defines vfmadd/vfnmacc, vfmsac/vfnmsac, vfmadd/vfnmadd, and vfmsub/vfnmsub lower to V instructions. Authored-by:
Roger Ferrer Ibanez <rofirrim@gmail.com> Co-Authored-by:
ShihPo Hung <shihpo.hung@sifive.com> Differential Revision: https://reviews.llvm.org/D93691
-
ShihPo Hung authored
This patch defines vwmacc[u|su|us] intrinsics and lower to V instructions. We work with @rogfer01 from BSC to come out this patch. Authored-by:
Roger Ferrer Ibanez <rofirrim@gmail.com> Co-Authored-by:
ShihPo Hung <shihpo.hung@sifive.com> Differential Revision: https://reviews.llvm.org/D93675
-
ShihPo Hung authored
This patch adds intrinsics for vslide1up, vslide1down, vfslide1up, vfslide1down. Authored-by:
Roger Ferrer Ibanez <rofirrim@gmail.com> Co-Authored-by:
ShihPo Hung <shihpo.hung@sifive.com> Differential Revision: https://reviews.llvm.org/D93608
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Arthur O'Dwyer authored
Differential Revision: https://reviews.llvm.org/D76572
-
Peter Collingbourne authored
The primary and secondary allocators will need to share this bit, so move the management of the bit to the combined allocator and make useMemoryTagging() a free function. Differential Revision: https://reviews.llvm.org/D93730
-
Peter Collingbourne authored
This will allow the secondary allocator to access the MaySupportMemoryTagging bool. Differential Revision: https://reviews.llvm.org/D93729
-
Stanislav Mekhanoshin authored
It does not seem to fold offsets but this is not specific to the flat scratch as getPtrBaseWithConstantOffset() does not return the split for these tests unlike its SDag counterpart. Differential Revision: https://reviews.llvm.org/D93670
-
Stanislav Mekhanoshin authored
Adjust SITargetLowering::allowsMisalignedMemoryAccessesImpl for unaligned flat scratch support. Mostly needed for global isel. Differential Revision: https://reviews.llvm.org/D93669
-
Peter Collingbourne authored
This will allow the primary and secondary allocators to share the MaySupportMemoryTagging bool. Differential Revision: https://reviews.llvm.org/D93728
-