- Dec 24, 2020
-
-
Sriraman Tallam authored
Every basic block section symbol created by -fbasic-block-sections will contain ".__part." to know that this symbol corresponds to a basic block fragment of the function. This patch solves two problems: a) Like D89617, we want function symbols with suffixes to be properly qualified so that external tools like profile aggregators know exactly what this symbol corresponds to. b) The current basic block naming just adds a ".N" to the symbol name where N is some integer. This collides with how clang creates __cxx_global_var_init.N. clang creates these symbol names to call constructor functions and basic block symbol naming should not use the same style. Fixed all the test cases and added an extra test for __cxx_global_var_init breakage. Differential Revision: https://reviews.llvm.org/D93082
-
Lei Zhang authored
Previously all SCF to SPIR-V conversion patterns were tested as the -convert-gpu-to-spirv pass. That obscured the structure we want. This commit fixed it. Reviewed By: ThomasRaoux, hanchung Differential Revision: https://reviews.llvm.org/D93488
-
Roman Lebedev authored
[LoopIdiom] 'left-shift until bittest' idiom: support rewriting loop as countable, allow extra cruft The current state of the transform is still not enough to support my motivational pattern, because it has one more "induction variable". I have delayed posting this patch, because originally even just rewriting the loop as countable wasn't enough to nicely transform my motivational pattern, because i expected that extra IV to be rewritten afterwards, but it wasn't happening until i fixed that in D91800. So, this patch allows the 'left-shift until bittest' loop idiom as long as the inserted ops are cheap, and lifts any and all extra use checks on the instructions. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D92754
-
Roman Lebedev authored
If the bitmask is for sign bit, instcombine would have canonicalized the pattern into a proper sign bit check. Supporting that is still simple, but requires a bit of a roundtrip - we first have to use `decomposeBitTestICmp()`, and the rest again just works. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D91726
-
Roman Lebedev authored
The handing of the case where the mask is a constant is trivial, if said constant is a power of two, the bit in question is log2(mask), rest just works. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D91725
-
Roman Lebedev authored
The motivation here is the following inner loop in fp16/fp24 -> fp32 expander, that runs as part of the floating-point DNG decompression in RawSpeed library: https://github.com/darktable-org/rawspeed/blob/cd380bb9a209bd2e7a0e7022b0cab04528d151e7/src/librawspeed/decompressors/DeflateDecompressor.cpp#L112-L115 ``` while (!(fp32_fraction & (1 << 23))) { fp32_exponent -= 1; fp32_fraction <<= 1; } ``` (https://godbolt.org/z/r13YMh) As one might notice, that loop is currently uncountable, and that whole code stays scalar. Yet, it is rather trivial to make that loop countable: https://godbolt.org/z/do8WMz and we can prove that via alive2: https://alive2.llvm.org/ce/z/7vQnji (ha nice, isn't it?) ... and that allow for the whole fp16->fp32 code to vectorize: https://godbolt.org/z/7hYr13 Now, while i'd love to get there, i feel like i should take it in steps. For now, this introduces support for the most basic case, where the bit position is known as a variable, and the loop *will* go away (has no live-outs other than the recurrence, no extra instructions in the loop). I have added sufficient (i believe) test coverage, and alive2 is happy with those transforms. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D91038
-
Nico Weber authored
They seem to pass fine with the analyzer off, and with this I would've noticed my last check-clang break locally.
-
Thomas Raoux authored
Add canonicalization for BroadcastOp, ExtractStrideSlicesOp and ShapeCastOp Differential Revision: https://reviews.llvm.org/D93120
-
Nico Weber authored
This should've been in 7ad66679 but wasn't. Squashes these twoc commits: Revert "[clang][cli] Let denormalizer decide how to render the option based on the option class" This reverts commit 70410a26. Revert "[clang][cli] Implement `getAllArgValues` marshalling" This reverts commit 63a24816.
-
Alan Phipps authored
This reverts commit b920adf3.
-
Andrew Litteken authored
[IROutliner] Adding support for elevating constants that are not the same in each region to arguments When there are constants that have the same structural location, but not the same value, between different regions, we cannot simply outline the region. Instead, we find the constants that are not the same in each location, and promote them to arguments to be passed into the respective functions. At each call site, we pass the constant in as an argument regardless of type. Added/Edited Tests: llvm/test/Transforms/IROutliner/outlining-constants-vs-registers.ll llvm/test/Transforms/IROutliner/outlining-different-constants.ll llvm/test/Transforms/IROutliner/outlining-different-globals.ll Reviewers: paquette, jroelofs Differential Revision: https://reviews.llvm.org/D87294
-
AlexisPerry authored
- updated the link to join the meeting to reflect the new WebEx information - Added a note about the new Google Doc for keeping track of notes, and who to contact if you experience access issues with the document - Left a reference to the minutes from previous meetings being available through a search of the flang-dev mailing list Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D93770 -
Alan Phipps authored
-
Craig Topper authored
Also include a special case pattern to use vmv.v.x vd, zero when the argument is 0.0. Reviewed By: khchen Differential Revision: https://reviews.llvm.org/D93672
-
Jonas Devlieghere authored
GetCommandSPExact is called exaclty once with include_aliases set to true, so make it a default argument. Use early returns to simplify the implementation.
-
Jonas Devlieghere authored
Don't instrument demangling calls. These functions are very hot and instrumenting them quickly results in too much data to be useful.
-
Lei Zhang authored
Reviewed By: hanchung, ThomasRaoux Differential Revision: https://reviews.llvm.org/D93468
-
Nico Weber authored
741978d7 made clang produce output that's 2x as large at least in sanitizer builds. https://reviews.llvm.org/D83892#2470185 has a standalone repro. This reverts the following commits: Revert "[clang][cli] Port CodeGenOpts simple string flags to new option parsing system" This reverts commit 95d3cc67. Revert "[clang][cli] Port LangOpts simple string based options to new option parsing system" This reverts commit aec2991d. Revert "[clang][cli] Streamline MarshallingInfoFlag description" This reverts commit 27b7d646. Revert "[clang][cli] Port LangOpts option flags to new option parsing system" This reverts commit 383778e2. Revert "[clang][cli] Port CodeGen option flags to new option parsing system" This reverts commit 741978d7.
-
Joseph Huber authored
-
Jez Ng authored
We didn't have support for parsing DriverKit in our `-platform` flag, so add that too. Also remove a bunch of unnecessary namespace prefixes. Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D93741
-
- Dec 23, 2020
-
-
Paul C. Anagnostopoulos authored
Update the documentation and add a test. Build failed: Change SIZE_MAX to std::numeric_limits<int64_t>::max(). Differential Revision: https://reviews.llvm.org/D93419
-
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
-