- Jun 30, 2021
-
-
Simon Pilgrim authored
-
Alexey Bataev authored
No need to try to create the default constructor for private copy, it will be called automatically in the initializer of the declare reduction. Fixes balance between constructors/destructors calls. Differential Revision: https://reviews.llvm.org/D105143
-
Zhouyi Zhou authored
Hi, In function TransformTemplateArgument, would it be better to add line break at the end of "if" expressions? I use clang-format to do the job for me. Thanks a lot Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D104604
-
madhur13490 authored
This is a followup patch on D103636 where it seemed checking on amdgpu-calls and amdgpu-stack-objects is unnecessary. Removing these checks didn't regress any tests functionally. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D104513
-
Florian Hahn authored
Currently UREM & SREM on constant ranges produces overly pessimistic results for single element constant ranges. Delegate to APInt's implementation if both operands are single element constant ranges. We already do something similar for other binary operators, like binary AND. Fixes PR49731. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D105115
-
Florian Mayer authored
Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D105021
-
David Sherwood authored
Avoid creating a IRBuilder stack variable with the same name as the class member.
-
Florian Mayer authored
Looking at PostDominatorTree::dominates, we can see that has the same logic (with the addition of handling Phi nodes - which are not used as inputs in this pass) as the helper function. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D105141
-
Jay Foad authored
My use case for this is illustrated in the test case: I want to define the same instruction twice with different (disjoint) predicates, because the instruction has different operands on different subtargets. It's convenient to do this with a multiclass that also defines an alias for the instruction. Previously tablegen would complain if this alias was defined twice with no predicate. One way to fix this would be to add a predicate on each definition of the alias, matching the predicate on the instruction. But this (a) is slightly awkward to do in the real world use case I had, and (b) leads to an inefficient matcher that will do something like this: if (Mnemonic == "foo_alias") { if (Features.test(Feature_Subtarget1Bit)) Mnemonic == "foo"; else if (Features.test(Feature_Subtarget2Bit)) Mnemonic == "foo"; return; } It would be more efficient to skip the feature tests and return "foo" unconditionally. Overall it seems better to allow multiple definitions of the identical alias with no predicate. Differential Revision: https://reviews.llvm.org/D105033 -
Valeriy Savchenko authored
-
Igor Kudrin authored
This follows other patches that changed printing immediate values of branch instructions to target addresses, see D76580 (x86), D76591 (PPC), D77853 (AArch64). As observing immediate values might sometimes be useful, they are printed as comments for branch instructions. // llvm-objdump -d output (before) 000200b4 <_start>: 200b4: ff ff ff fa blx #-4 <thumb> 000200b8 <thumb>: 200b8: ff f7 fc ef blx #-8 <_start> // llvm-objdump -d output (after) 000200b4 <_start>: 200b4: ff ff ff fa blx 0x200b8 <thumb> @ imm = #-4 000200b8 <thumb>: 200b8: ff f7 fc ef blx 0x200b4 <_start> @ imm = #-8 // GNU objdump -d. 000200b4 <_start>: 200b4: faffffff blx 200b8 <thumb> 000200b8 <thumb>: 200b8: f7ff effc blx 200b4 <_start> Differential Revision: https://reviews.llvm.org/D104701
-
Tobias Gysi authored
Extend the OpDSL syntax with an optional `domain` function to specify an explicit dimension order. The extension is needed to provide more control over the dimension order instead of deducing it implicitly depending on the formulation of the tensor comprehension. Additionally, the patch also ensures the symbols are ordered according to the operand definitions of the operation. Differential Revision: https://reviews.llvm.org/D105117
-
Igor Kudrin authored
`ARMInstPrinter::printMveAddrModeQOperand()` was added in D62680, but was never used. It looks like `printT2AddrModeImm8Operand<false>()` is used instead. Differential Revision: https://reviews.llvm.org/D105124
-
Stephan Herhut authored
This was missing and also there was a bug in the lowering itself, which went unnoticed due to it. Differential Revision: https://reviews.llvm.org/D105122
-
Sjoerd Meijer authored
This recommits D104782 including a fix for adding a wrong operand to the new load node. Differential Revision: https://reviews.llvm.org/D105110
-
Dmitry Polukhin authored
Compilation database might have empty string as a command line argument. But ExpandResponseFilesDatabase::expand doesn't expect this and assumes that string.front() can be used for any argument. It is undefined behaviour if string is empty. With debug build mode it causes crash in clangd. Test Plan: check-clang Differential Revision: https://reviews.llvm.org/D105120
-
Kai Luo authored
-
Uday Bondhugula authored
Fix generateCopyForMemRefRegion for a missing check: in some cases, when the thing to generate copies for itself is empty, no fast buffer/copy loops would have been allocated/generated. Add an extra assertion there while at this. Differential Revision: https://reviews.llvm.org/D105170
-
Kai Luo authored
-
Mehdi Amini authored
-
Tony Tye authored
Update AMDGPU gfx90a memory model to make coarse grain memory allocations consistent when fine grained system scope atomic acquire and release is performed. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D105137
-
Chuanqi Xu authored
Now the option is off by default. Since we are not sure if this option would make the compile time increase aggressively. Although we tested it on SPEC2017, we may need to test more to make it on by default. Reviewed By: SjoerdMeijer Differential Revision: https://reviews.llvm.org/D104365
-
Chuanqi Xu authored
Now we lack a benchmark to measure the performance change for each commit. Since coro elide is the main optimization in coroutine module, I wonder it may be an estimation to count the number of elided coroutine in private code bases. e.g., for a certain commit, if we found that the number of elided goes down, we could find it before the commit check-in. Reviewed By: lxfind Differential Revision: https://reviews.llvm.org/D105095
-
Fangrui Song authored
The load command is currently specific to arm64 and holds information for instruction rewriting, e.g. converting a GOT load to an ADR to compute a local address. (On ELF the information is usually conveyed by relocations, e.g. R_X86_64_REX_GOTPCRELX, R_PPC64_TOC16_HA) Reviewed By: alexander-shaposhnikov Differential Revision: https://reviews.llvm.org/D104968
-
-
Greg Clayton authored
This fix was created after profiling the target creation of a large C/C++/ObjC application that contained almost 4,000,000 redacted symbol names. The symbol table parsing code was creating names for each of these synthetic symbols and adding them to the name indexes. The code was also adding the object file basename to the end of the symbol name which doesn't allow symbols from different shared libraries to share the names in the constant string pool. Prior to this fix this was creating 180MB of "___lldb_unnamed_symbol" symbol names and was taking a long time to generate each name, add them to the string pool and then add each of these names to the name index. This patch fixes the issue by: - not adding a name to synthetic symbols at creation time, and allows name to be dynamically generated when accessed - doesn't add synthetic symbol names to the name indexes, but catches this special case as name lookup time. Users won't typically set breakpoints or lookup these synthetic names, but support was added to do the lookup in case it does happen - removes the object file baseanme from the generated names to allow the names to be shared in the constant string pool Prior to this fix the startup times for a large application was: 12.5 seconds (cold file caches) 8.5 seconds (warm file caches) After this fix: 9.7 seconds (cold file caches) 5.7 seconds (warm file caches) The names of the symbols are auto generated by appending the symbol's UserID to the end of the "___lldb_unnamed_symbol" string and is only done when the name is requested from a synthetic symbol if it has no name. Differential Revision: https://reviews.llvm.org/D105160
-
Nick Desaulniers authored
This test was modified in D104958. Invoking opt with -{passname} (vs -passes={passname}) without -enable-new-pm={0|1} is now ambiguous and dependent on how LLVM was configured. Drop the LPM runs rather than fix since there unlikely to be any users still on LPM that rely on the behavior in this test. See also: https://lists.llvm.org/pipermail/llvm-dev/2021-June/151553.html Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D105154 -
David Blaikie authored
-
Akira Hatanaka authored
ObjC property getter/setter functions This is needed to prevent clang from crashing when we make the changes proposed in https://reviews.llvm.org/D98799. Differential Revision: https://reviews.llvm.org/D104883
-
Steffen Larsen authored
Adds NVPTX builtins and intrinsics for the CUDA PTX `wmma.load`, `wmma.store`, `wmma.mma`, and `mma` instructions added in PTX 6.5 and 7.0. PTX ISA description of - `wmma.load`: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-instructions-wmma-ld - `wmma.store`: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-instructions-wmma-st - `wmma.mma`: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-instructions-wmma-mma - `mma`: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-instructions-mma Overview of `wmma.mma` and `mma` matrix shape/type combinations added with specific PTX versions: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-shape Authored-by:
Steffen Larsen <steffen.larsen@codeplay.com> Co-Authored-by:
Stuart Adams <stuart.adams@codeplay.com> Reviewed By: tra Differential Revision: https://reviews.llvm.org/D104847
-
Dhruva Chakrabarti authored
This patch is related to https://reviews.llvm.org/D98832. Based on discussions there, I decided to separate out the teams default as this patch. This change is to increase the number of teams per computation unit so as to provide more wavefronts for hiding latency. This change improves performance for some programs, including 20-50% for some Stream benchmarks. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D99003
-
Adrian Prantl authored
This patch implements a slight improvement when debugging across platforms and remapping source paths that are in a non-native format. See the unit test for examples. rdar://79205675 Differential Revision: https://reviews.llvm.org/D104407
-
Adrian Prantl authored
This addresses feedback raised in https://reviews.llvm.org/D104404. Differential Revision: https://reviews.llvm.org/D104724
-
Adrian Prantl authored
NFC. This patch replaces the function body FindFile() with a call to RemapPath(), since the two functions implement the same functionality. Differential Revision: https://reviews.llvm.org/D104406
-
Adrian Prantl authored
This is an NFC modernization refactoring that replaces the combination of a bool return + reference argument, with an Optional return value. Differential Revision: https://reviews.llvm.org/D104405
-
Aaron Puchert authored
In D104261 we made the parameters' meaning slightly more specific, this changes their names accordingly. In all uses we're building a new lock set by intersecting existing locksets. The first (modifiable) argument is the new lock set being built, the second (non-modifiable) argument is the exit set of a preceding block. Reviewed By: aaron.ballman, delesley Differential Revision: https://reviews.llvm.org/D104649
-
Aaron Puchert authored
We allow branches to join where one holds a managed lock but the other doesn't, but we can't do so for back edges: because there we can't drop them from the lockset, as we have already analyzed the loop with the larger lockset. So we can't allow dropping managed locks on back edges. We move the managed() check from handleRemovalFromIntersection up to intersectAndWarn, where we additionally check if we're on a back edge if we're removing from the first lock set (the entry set of the next block) but not if we're removing from the second lock set (the exit set of the previous block). Now that the order of arguments matters, I had to swap them in one invocation, which also causes some minor differences in the tests. Reviewed By: delesley Differential Revision: https://reviews.llvm.org/D104261
-
Arthur Eubanks authored
For example, byval. Skip the type attribute auto-upgrade if we already have the type. I've actually seen this error of the ValueEnumerator missing a type attribute's type in a non-opaque pointer context. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D105138
-
Nikita Popov authored
Make these follow the update_test_checks.py format.
-