- Dec 15, 2020
-
-
Craig Topper authored
-
Alexander Kornienko authored
This is the final cleanup after https://reviews.llvm.org/D74499 Reviewed By: steveire Differential Revision: https://reviews.llvm.org/D93244
-
Siva Chandra Reddy authored
-
Jon Chesterfield authored
[amdgpu] Default to code object v3 v4 is not yet readily available, and doesn't appear to be implemented in the back end Reviewed By: t-tye Differential Revision: https://reviews.llvm.org/D93258
-
Reid Kleckner authored
We determined that the MSVC implementation of std::aligned* isn't suited to our needs. It doesn't support 16 byte alignment or higher, and it doesn't really guarantee 8 byte alignment. See https://github.com/microsoft/STL/issues/1533 Also reverts "ADT: Change AlignedCharArrayUnion to an alias of std::aligned_union_t, NFC" Also reverts "ADT: Remove AlignedCharArrayUnion, NFC" to bring back AlignedCharArrayUnion. This reverts commit 4d8bf870. This reverts commit d10f9863. This reverts commit 4b5dc150.
-
Changpeng Fang authored
Summary: If a store defines (must alias) a load, it clobbers the load. Fixes: SWDEV-258915 Reviewers: arsenm Differential Revision: https://reviews.llvm.org/D92951
-
Nemanja Ivanovic authored
Commit bfdc19e7 seems to have broken some PPC bots with a couple of asan test cases. Disable those test cases for now until I can resolve the issue.
-
Rong Xu authored
This patch adds the functionality to compare BFI counts with real profile counts right after reading the profile. It will print remarks under -Rpass-analysis=pgo, or the internal option -pass-remarks-analysis=pgo. Differential Revision: https://reviews.llvm.org/D91813
-
Harald van Dijk authored
The X86-64 ABI defines va_list as typedef struct { unsigned int gp_offset; unsigned int fp_offset; void *overflow_arg_area; void *reg_save_area; } va_list[1]; This means the size, alignment, and reg_save_area offset will depend on whether we are in LP64 or in ILP32 mode, so this commit adds the checks. Additionally, the VAARG_64 pseudo-instruction assumed 64-bit pointers, so this commit adds a VAARG_X32 pseudo-instruction that behaves just like VAARG_64, except for assuming 32-bit pointers. Some of these changes were originally done by Michael Liao <michael.hliao@gmail.com>. Fixes https://bugs.llvm.org/show_bug.cgi?id=48428. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D93160 -
Nico Weber authored
Differential Revision: https://reviews.llvm.org/D93237
-
Peter Collingbourne authored
Make these arguments named constants in the Config class instead of being positional arguments to MapAllocatorCache. This makes the configuration easier to follow. Eventually we should follow suit with the other classes but this is a start. Differential Revision: https://reviews.llvm.org/D93251
-
Sanjay Patel authored
-
Nico Weber authored
-
Nico Weber authored
-
Eugene Zhulenev authored
Differential Revision: https://reviews.llvm.org/D93250
-
Richard Uhler authored
With a brief overview and summary of each of the Rationale docs. Differential Revision: https://reviews.llvm.org/D93245
-
Gulfem Savrun Yeniceri authored
This patch adds support for leaf attribute as an optimization hint in Clang/LLVM. Differential Revision: https://reviews.llvm.org/D90275
-
Louis Dionne authored
Checking that `T` is constructible from `Args...` is technically not required by the Standard, although any implementation will obviously error out if that's not satisfied. However, this check is incompatible with using Allocator construction in the control block (upcoming change as part of implementing P0674), so I'm removing it now to reduce the upcoming diff as much as possible. Differential Revision: https://reviews.llvm.org/D93246
-
Louis Dionne authored
This makes __get_alloc consistent with __get_elem, and will reduce the diff required to implement P0674R1.
-
Sanjay Patel authored
As noted in D93229, the transform from scalar load to vector load potentially leaks poison from the extra vector elements that are being loaded. We could use freeze here (and x86 codegen at least appears to be the same either way), but we already have a shuffle in this logic to optionally change the vector size, so let's allow that instruction to serve both purposes. Differential Revision: https://reviews.llvm.org/D93238
-
Duncan P. N. Exon Smith authored
The bots just told me about a place in LLDB I missed in a40db550 when changing `HeaderSearch::LoadedModuleMaps`, but I think this will fix it.
-
Duncan P. N. Exon Smith authored
-
Duncan P. N. Exon Smith authored
Looks this this was added by 68f53960.
-
Duncan P. N. Exon Smith authored
Migrate `HeaderSearch::LoadedModuleMaps` and a number of APIs over to `FileEntryRef`. This should have no functionality change. Note that two `FileEntryRef`s hash the same if they point at the same `FileEntry`. Differential Revision: https://reviews.llvm.org/D92975
-
Craig Topper authored
[LoopIdiomRecognize] Teach detectShiftUntilZeroIdiom to recognize loops where the counter is decrementing. This adds support for loops like unsigned clz(unsigned x) { unsigned w = sizeof (x) * CHAR_BIT; while (x) { w--; x >>= 1; } return w; } and unsigned clz(unsigned x) { unsigned w = sizeof (x) * CHAR_BIT - 1; while (x >>= 1) { w--; } return w; } To support these we look for add x, -1 as well as add x, 1 that we already matched. If the value was -1 we need to subtract from the initial counter value instead of adding to it. Fixes PR48404. Differential Revision: https://reviews.llvm.org/D92745 -
River Riddle authored
This revision adds a new `StaticVerifierFunctionEmitter` class that emits local static functions in the .cpp file for shared operation verification. This class deduplicates shared operation verification code by emitting static functions alongside the op definitions. These methods are local to the definition file, and are invoked within the operation verify methods. The first bit of shared verification is for the type constraints used when verifying operands and results. An example is shown below: ``` static LogicalResult localVerify(...) { ... } LogicalResult OpA::verify(...) { if (failed(localVerify(...))) return failure(); ... } LogicalResult OpB::verify(...) { if (failed(localVerify(...))) return failure(); ... } ``` This allowed for saving >400kb of code size from a downstream TensorFlow project (~15% of MLIR code size). Differential Revision: https://reviews.llvm.org/D91381 -
Stanislav Mekhanoshin authored
Differential Revision: https://reviews.llvm.org/D93067
-
Louis Dionne authored
This commit is a step towards making it easier to add support for arrays in allocate_shared. Adding support for arrays will require writing multiple functions, and the current complexity of writing allocate_shared is prohibitive for understanding. Differential Revision: https://reviews.llvm.org/D93130
-
Bardia Mahjour authored
This reverts commit fd4a1073, to investigate the failure on windows: http://lab.llvm.org:8011/#/builders/127/builds/3274
-
Christian Sigg authored
This reverts commit 6f271e92. Differential Revision: https://reviews.llvm.org/D93242
-
Philip Reames authored
(The clang build fails for me locally, so this is based on built bot output and a guess as to root cause.) f5fe8493 made the execution of LAA conditional, so I'm guessing that's the root cause.
-
Bardia Mahjour authored
This patch implements a DDG printer pass that generates a graph in the DOT description language, providing a more visually appealing representation of the DDG. Similar to the CFG DOT printer, this functionality is provided under an option called -dot-ddg and can be generated in a less verbose mode under -dot-ddg-only option. Differential Revision: https://reviews.llvm.org/D90159
-
Javier Setoain authored
This revision starts an Arm-specific ArmSVE dialect discussed in the discourse RFC thread: https://llvm.discourse.group/t/rfc-vector-dialects-neon-and-sve/2284 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D92172
-
Matt Arsenault authored
Currently the backend special cases x86_intrcc and treats the first parameter as byval. Make the IR require byval for this parameter to remove this special case, and avoid the dependence on the pointee element type. Fixes bug 46672. I'm not sure the IR is enforcing all the calling convention constraints. clang seems to ignore the attribute for empty parameter lists, but the IR tolerates it.
-
Matt Arsenault authored
This will allow removing the special case treatment of the parameter and avoid depending on the pointer's element type.
-
Louis Dionne authored
In addition to making the code a lot easier to grasp by localizing many helper functions to the only file where they are actually needed, this will allow creating helper functions that depend on allocator_traits outside of <memory>. This is done as part of implementing array support in allocate_shared, which requires non-trivial array initialization algorithms that would be better to keep out of <memory> for sanity. It's also a first step towards splitting up our monolithic headers into finer grained ones, which will make it easier to reuse functionality across the library. For example, it's just weird that we had to define `addressof` inside <type_traits> to avoid circular dependencies -- instead it's better to implement those in true helper headers. Differential Revision: https://reviews.llvm.org/D93074
-
Zequan Wu authored
Differential Revision: https://reviews.llvm.org/D93150
-
Hafiz Abid Qadeer authored
This patch add support of riscv multilibs in the Baremetal toolchain. It is a bit different to what is done in GNU.cpp as we are not iterating a GNU sysroot to find the multilibs. This is intended for an llvm only toolchain. We are not checking for the presence of any runtime bits to enable a specific multilib. I have structured the patch so that other targets for which there is no multilibs support yet in Baremetal.cpp (e.g. arm-none-eabi) will not be affected. Patch also allows some multilibs reuse. Long term, I would like to go in the direction of data-driven specification of multilib directories and flags. Reviewed By: jroelofs Differential Revision: https://reviews.llvm.org/D93138
-
Guozhi Wei authored
The entry block should always be the first BB in a function. So we should not rotate a chain contains the entry block. Differential Revision: https://reviews.llvm.org/D92882
-
Philip Reames authored
his is a preparation patch for supporting multiple exits in the loop vectorizer, by itself it should be mostly NFC. This patch moves the loop structure checks from LAA to their respective consumers (where duplicates don't already exist). Moving the checks does end up changing some of the optimization warnings and debug output slightly, but nothing that appears to be a regression. Why do this? Well, after auditing the code, I can't actually find anything in LAA itself which relies on having all instructions within a loop execute an equal number of times. This patch simply makes this explicit so that if one consumer - say LV in the near future (hopefully) - wants to handle a broader class of loops, it can do so. Differential Revision: https://reviews.llvm.org/D92066
-