- Oct 22, 2021
-
-
Craig Topper authored
Instead of returning a bool to indicate success and a separate SDValue, return the SDValue and have the callers check if it is null. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D112331
-
Jonas Devlieghere authored
When targeting iOS, the default dwarf version is 2 and not 4. Currently, the test suite does not pick up on that because it invokes the test compiler without a target triple. This patch fixes that and now correctly skips tests that have a dwarf version specified in a skipIf decorator. rdar://84530477 Differential revision: https://reviews.llvm.org/D112325
-
Quinn Pham authored
[NFC] This patch fixes a url in a testcase due to the renaming of the branch.
-
Louis Dionne authored
-
Nikita Popov authored
This follows up on D111023 by exporting the generic "load value from constant at given offset as given type" and using it in the store to load forwarding code. We now need to make sure that the load size is smaller than the store size, previously this was implicitly ensured by ConstantFoldLoadThroughBitcast(). Differential Revision: https://reviews.llvm.org/D112260
-
Nikita Popov authored
Make use of the getGEPIndicesForOffset() helper for creating GEPs. This handles arrays as well, uses correct GEP index types and reduces code duplication. Differential Revision: https://reviews.llvm.org/D112263
-
Craig Topper authored
[LegalizeTypes][RISCV][PowerPC] Expand CTLZ/CTTZ/CTPOP instead of promoting if they'll be expanded later. Expanding these requires multiple constants. If we promote during type legalization when they'll end up getting expanded in LegalizeDAG, we'll use larger constants. These constants may be harder to materialize. For example, 64-bit constants on 64-bit RISCV are very expensive. This is similar to what has already been done to BSWAP and BITREVERSE. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D112268
-
Steven Wan authored
On AIX, the plugins are linked with `-WL,-G`, which produces shared objects enabled for use with the run-time linker. This patch sets the run-time linker at the main executable link step to allow symbols from the plugins shared objects to be properly bound. Reviewed By: daltenty Differential Revision: https://reviews.llvm.org/D112275
-
Craig Topper authored
These tests have nearly identical content the only difference is that the rv64 test has a signext attribute on some parameters. That attribute should be harmless on rv32. Merge them into a single test file with 2 RUN lines. Differential Revision: https://reviews.llvm.org/D112242
-
Vladimir Inđić authored
KMP_API_NAME_GOMP_PARALLEL_SECTIONS function was missing the task frame support. This patch introduced a fix responsible to set properly the exit_frame of the innermost implicit task that corresponds to the parallel section construct, as well as the enter_frame of the task that encloses the mentioned implicit task. This patch also introduced a simple test case sections_serialized.c that contains serialized parallel section construct and validates whether the mentioned task frames are set correctly. Differential Revision: https://reviews.llvm.org/D112205
-
Kazu Hirata authored
-
Jonas Paulsson authored
This pseudo is expanded very late (AsmPrinter) and therefore has to have a correct size value, or the branch relaxation pass may make a wrong decision. Review: Ulrich Weigand
-
Mark de Wever authored
Based on the comment of @Quuxplusone in D111961. It seems no tests are affected, but give it a run on the CI to be sure. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D112231
-
Mark de Wever authored
`utils/generate_feature_test_macro_components.py` uses the wrong indentation. `:name: feature-status-table :widths: auto` is rendered as text instead of being used by Sphinx to render the table properly. This fixes the identation in the souce and updates the generated output. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D112251
-
Piotr Sobczak authored
-
Konstantin Boyarinov authored
Add missing tests for std::vector operator==, !=, <, <=, >, >= Reviewed By: ldionne, rarutyun, Quuxplusone, Mordante, #libc Differential Revision: https://reviews.llvm.org/D111738
-
Andrzej Warzynski authored
This section of the documentation should've been deleted in: https://reviews.llvm.org/D105811 I am submitting this without a review as it's an obvious omission.
-
Bradley Smith authored
This will allow us to reuse existing interleaved load logic in lowerInterleavedLoad that exists for neon types, but for SVE fixed types. The goal eventually will be to replace the existing ld<n> intriniscs with these, once a migration path has been sorted out. Differential Revision: https://reviews.llvm.org/D112078
-
Zarko Todorovski authored
-
Roman Lebedev authored
[X86] `X86TTIImpl::getInterleavedMemoryOpCost()`: scale interleaving cost by the fraction of live members By definition, interleaving load of stride N means: load N*VF elements, and shuffle them into N VF-sized vectors, with 0'th vector containing elements `[0, VF)*stride + 0`, and 1'th vector containing elements `[0, VF)*stride + 1`. Example: https://godbolt.org/z/df561Me5E (i64 stride 4 vf 2 => cost 6) Now, not fully interleaved load, is when not all of these vectors is demanded. So at worst, we could just pretend that everything is demanded, and discard the non-demanded vectors. What this means is that the cost for not-fully-interleaved group should be not greater than the cost for the same fully-interleaved group, but perhaps somewhat less. Examples: https://godbolt.org/z/a78dK5Geq (i64 stride 4 (indices 012u) vf 2 => cost 4) https://godbolt.org/z/G91ceo8dM (i64 stride 4 (indices 01uu) vf 2 => cost 2) https://godbolt.org/z/5joYob9rx (i64 stride 4 (indices 0uuu) vf 2 => cost 1) Right now, for such not-fully-interleaved loads we just use the costs for fully-interleaved loads. But at least **in general**, that is obviously overly pessimistic, because **in general**, not all the shuffles needed to perform the full interleaving will end up being live. So what this does, is naively scales the interleaving cost by the fraction of the live members. I believe this should still result in the right ballpark cost estimate, although it may be over/under -estimate. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D112307
-
Sylvestre Ledru authored
and fix some typos Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D112299
-
Pavel Labath authored
This particular usage was guarded by !__linux__, so it broke everywhere else. It should probably be replaced by something else.
-
Simon Pilgrim authored
Pre-commit for D111530
-
Jay Foad authored
This doesn't have any effect on codegen now, but it might do in the future if we shrink instructions before post-RA scheduling, which is sensitive to live vs dead defs. Differential Revision: https://reviews.llvm.org/D112305
-
Mats Petersson authored
Pass the modifiers from the Flang parser to FIR/MLIR workshare loop operation. Not yet supporting the SIMD modifier, which is a bit more work than just adding it to the list of modifiers, so will go in a separate patch. This adds a new field to the WsLoopOp. Also add test for dynamic WSLoop, checking that dynamic schedule calls the init and next functions as expected. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D111053
-
Florian Hahn authored
This patch adds more complex test cases with redundant stores of an existing memset, with other stores in between. It also makes a few of the existing tests more robust.
-
Michał Górny authored
Use llvm::Optional<uint16_t> instead of int for port number in UriParser::Parse(), and use llvm::None to indicate missing port instead of a magic value of -1. Differential Revision: https://reviews.llvm.org/D112309
-
Pavel Labath authored
I missed windows and openbsd.
-
Roman Lebedev authored
This test is quite fragile WRT improvements to the interleaved load cost modelling. Let's bump the stride way up so that is no longer a concern.
-
Roman Lebedev authored
This reverts commit 8ae83a1b.
-
Simon Pilgrim authored
-
Roman Lebedev authored
The math here is: Cost of 1 load = cost of n loads / n Cost of live loads = num live loads * Cost of 1 load Cost of live loads = num live loads * (cost of n loads / n) Cost of live loads = cost of n loads * (num live loads / n) But, all the variables here are integers, and integer division rounds down, but this calculation clearly expects float semantics. Instead multiply upfront, and then perform round-up-division. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D112302
-
Roman Lebedev authored
-
Pavel Labath authored
-
Kristof Beyls authored
A new check was added in 3b93dc68, which seems to not be possible to get working correctly on windows systems: The test first "captures" the install directory of the clang toolchain running the test as follows: // CHECK-AARCH64-NO-HOST-INC: InstalledDir: [[INSTALLEDDIR:.+]] Then, in a check line a bit later, it uses this to check if a particular directory in the toolchain installation directory is included when targeting aarch64-none-elf: // CHECK-AARCH64-NO-HOST-INC-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+}}aarch64-none-elf{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" Even though the test aims to take into account forward vs backward slash differences between Windows and Unix paths, it still fails on Windows. It seems that on Windows (this is based on the output log from a Windows bot), the INSTALLEDDIR variable has the following value: note: with "INSTALLEDDIR" equal to "c:\\\\b\\\\slave\\\\clang-x64-windows-msvc\\\\build\\\\stage1\\\\bin" However the actual "InstalledDir:" output produced by the clang toolchain on that Windows bot was: InstalledDir: c:\b\slave\clang-x64-windows-msvc\build\stage1\bin It is unclear where the explosion of backslashes happens. Maybe this is a bug in FileCheck somewhere? Anyway, marking this test as not supported on Windows to make the bots green again.
-
Simon Pilgrim authored
parseFunctionName allowed a default null pointer, despite it being dereferenced immediately to be used as a reference and that all callers were taking the address of an existing reference. Fixes static analyzer warning about potential dereferenced nulls
-
Michał Górny authored
Optimize the iterator comparison logic to compare Current.data() pointers. Use std::tie for assignments from std::pair. Replace the custom class with a function returning iterator_range. Differential Revision: https://reviews.llvm.org/D110535
-
Florian Hahn authored
IRBuilder has been updated to support preserving metdata in a more general manner. This patch adds `LLVMAddMetadataToInst` and deprecates `LLVMSetInstDebugLocation` in favor of the more general function. Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D93454
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D112301
-
Manas authored
Prior to this, the solver was only able to verify whether two symbols are equal/unequal, only when constants were involved. This patch allows the solver to work over ranges as well. Reviewed By: steakhal, martong Differential Revision: https://reviews.llvm.org/D106102 Patch by: @manas (Manas Gupta)
-