- Feb 29, 2024
-
-
Sumanth Gundapaneni authored
-
Louis Dionne authored
This seems more appropriate than mapping them to the headers that contain actual definitions.
-
Devajith Valaparambil Sreeramaswamy authored
This enables specifying the extract modifier to extract all matches into a function. This currently does this very directly by converting all operands to function arguments (ones due to results of other matched ops are dropped) and all results as return values. Differential Revision: https://reviews.llvm.org/D158693
-
Sander de Smalen authored
We can add implicit defs/uses of the 'VG' register to the instructions to prevent the register allocator from rematerializing values in between streaming-mode changes, as the def/use of VG will further nail down the ordering that comes out of ISel. This avoids the heavy-handed approach to prevent any kind of rematerialization. While we could add 'VG' as a Use to all SVE instructions, we only really need to do this for instructions that are rematerializable, as the smstart/smstop instructions and pseudos act as scheduling barriers which is sufficient to prevent other instructions from being scheduled in between the streaming-mode-changing call sequence. However, we may revisit this in the future.
-
Simon Pilgrim authored
-
Tuan Chuong Goh authored
-
Louis Dionne authored
Originally, we used __libcpp_verbose_abort to handle assertion failures. That function was declared from all public headers. Since we don't use that mechanism anymore, we don't need to declare __libcpp_verbose_abort from all public headers, and we can clean up a lot of unnecessary includes. This patch also moves the definition of the various assertion categories to the <__assert> header, since we now rely on regular IWYU for these assertion macros. rdar://105510916
-
Farzon Lotfi authored
This is the start of implementing the lerp intrinsic https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-lerp Builtins.td - defines the builtin hlsl_intrinsics.h - defines the lerp api DiagnosticSemaKinds.td - needed a new error to be inclusive for more than two operands. CGBuiltin.cpp - add the lerp intrinsic lowering SemaChecking.cpp - type checks for lerp builtin IntrinsicsDirectX.td - define the lerp intrinsic this change implements the first half of #70102 Co-authored-by:
Xiang Li <python3kgae@outlook.com>
-
David Spickett authored
This is marked deprecated from at least 4.6 onward: Deprecated: pass encoding to spawn() instead.
-
Michael Maitland authored
Based on numbers collected in our downstream toolchain.
-
RicoAfoat authored
[X86] matchAddressRecursively - ensure dead nodes are replaced before matching the index register (#82881) Fixes #82431 - see #82431 for more information.
-
Jeremy Morse authored
In a previous commit I added declarations for all these functions, but forgot to add bodies for them (as nothing uses them yet). These iterator-taking constructors are necessary for the future where we only use iterators for insertion, preserving some debug-info properties. Also adds two extra declarations I missed in 76dd4bc0
-
Stephen Tozer authored
Fixes: aadd7650 The above commit landed with an incorrect test expect, missing a `metadata` prefix. This patch adds the expected prefix to the test.
-
Petar Avramovic authored
AMDGPUInstructionSelector should no longer attempt to select S1 G_PHIs. Remove MIR test that attempts to inst-select divergent vcc(S1) G_PHI. Lane mask merging algorithm for GlobalISel is now responsible for selecting divergent S1 G_PHIs in AMDGPUGlobalISelDivergenceLowering. Uniform S1 G_PHIs should be lowered to S32 G_PHIs in reg bank select pass. In summary S1 G_PHIs should not reach AMDGPUInstructionSelector.
-
Stephen Tozer authored
Fixes the error described here: https://github.com/llvm/llvm-project/commit/a93a4ec7dd205b965ee5597314bb376520cd736c#commitcomment-138965199 The function `findDbgIntrinsics` is used to return a list of debug intrinsics and DPValues that use a given value, with the intent that no duplicates are returned in either list. For DPValues, we've guarded against DPValues that use a value multiple times as part of a DIArgList, but we have not guarded against DPValues that use a value multiple times as separate operands (currently only possible for `dbg_assign`s, something I missed in my implementation of that type!). This patch adds a guard, and also updates a test to cover this case.
-
David Spickett authored
If you run cmake without pexpect installed it errors as expected. However, if you just `pip install pexpect` and cmake again it still doesn't find it because it cached the result of the search. Unset the result before looking for pexpect. So that this works as expected: cmake ... pip3 install pexpect cmake ...
-
S. Bharadwaj Yadavalli authored
* Leverage TableGen record descriptions of LLVM or DirectX intrinsics that can be directly mapped in DXIL Ops TableGen description. As a result, such DXIL Ops can be succinctly described without duplication. DXILEmitter backend can derive the properties of DXIL Ops accordingly. * Ensured that corresponding lit tests pass.
-
Vinayak Dev authored
Adds diagnostics for lambda expressions being cast to boolean values, which results in the expression always evaluating to true. Earlier, Clang allowed compilation of such erroneous programs, but now emits a warning through `-Wpointer-bool-conversion`. Fixes #82512
-
Erich Keane authored
Compute Constructs do not permit jumping in/out of them, so this patch implements this for 'goto' as a followup to the other patches that have done the same thing. It does this by modifying the JumpDiagnostics to work with this, plus setting the function to needing jump diagnostics if we discover a goto or label inside of a Compute Construct.
-
Dani authored
Add the SignReturnAddressScopeKind to the BranchProtectionInfo class.
-
Benjamin Maxwell authored
-
Jeremy Morse authored
Removing debug-intrinsics requires that we always insert with an iterator, not with an instruction position. To enforce that, we need to eliminate the `Instruction *` taking functions. It's safe to leave the insert-at-end-of-block functions as the intention is clear for debug info purposes (i.e., insert after both instructions and debug-info at the end of the function). This patch demonstrates how that needs to happen. At a variety of call-sites to the `CreateNeg` constructor we need to consider: * Has this instruction been selected because of the operation it performs? In that case, just call `getIterator` and pass an iterator in. * Has this instruction been selected because of it's position? If so, we need to keep the iterator identifying that position (see the 3rd hunk changing Reassociate.cpp, although it's coincidentally not debug-info significant). This also demonstrates what we'll try and do with the constructor methods going forwards: have one fully explicit set of parameters including iterator, and another with default-arguments where the block-to-insert-into argument defaults to nullptr / no-position, creating an instruction that hasn't been inserted yet.
-
Petar Avramovic authored
Basic implementation of lane mask merging for GlobalISel. Lane masks on GlobalISel are registers with sgpr register class and S1 LLT - required by machine uniformity analysis. Implements equivalent of lowerPhis from SILowerI1Copies.cpp in: patch 1: https://github.com/llvm/llvm-project/pull/75340 patch 2: https://github.com/llvm/llvm-project/pull/75349 patch 3: https://github.com/llvm/llvm-project/pull/80003 patch 4: https://github.com/llvm/llvm-project/pull/78431 patch 5: is in this commit: AMDGPU/GlobalISelDivergenceLowering: constrain incoming registers Previously, in PHIs that represent lane masks, incoming registers taken as-is were not selected as lane masks. Such registers are not being merged with another lane mask and most often only have S1 LLT. Implement constrainAsLaneMask by constraining incoming registers taken as-is with lane mask attributes, essentially transforming them to lane masks. This is final step in having PHI instructions created in this pass to be fully instruction-selected.
-
David Green authored
This extends the known bits for extending loads which have range metadata, handling the range metadata on the original memory type, extending that to the correct BitWidth.
-
Joseph Huber authored
Summary: These hacks can be removed now that https://github.com/llvm/llvm-project/pull/83376 fixed the underlying problem.
-
Florian Hahn authored
getBlockInMask now simply returns an already computed mask, hence there's no need to adjust the builder insert point.
-
Simon Pilgrim authored
Allows us to peek through the F16 conversion nodes, mainly to simplify shuffles An easy part of #83414
-
Simon Pilgrim authored
-
Nicolai Hähnle authored
This came up on Discourse. See: https://discourse.llvm.org/t/module-verification-failed-instruction-does-not-dominate-all-uses/77207/
-
Jay Foad authored
Following on from #83118, this adds aliases for the "rtn" forms of these instructions. The fact that they were missing from SP3 was an oversight which has been fixed now.
-
Mitch Phillips authored
This reverts commit f0484e08. Reason: Broke the sanitizer build bots. See the github comments on https://github.com/llvm/llvm-project/commit/f0484e08bdcf64106592808e3ca80404937b4657 for more information
-
Samuel Tebbs authored
Some MIR and IR tests include checks for register class IDs, which are unnecessary since the register class name is also checked for and that doesn't change when new classes are added. This patch replaces the hard-coded register class ID checks with regexes so they don't have to be updated every time a new class is added.
-
Jay Foad authored
-
Alexander Belyaev authored
it changes behaviour for debug vs release builds.
-
Matt Arsenault authored
Follow the 2019 rules and order -0 as less than +0 and +0 as greater than -0. As currently defined this isn't required for the intrinsics, but is a better QoI. This will avoid the workaround in libc added by #83158
-
Sudharsan Veeravalli authored
Missed adding a . in the test check
-
Simon Pilgrim authored
[X86] getFauxShuffleMask - handle insert_vector_elt(bitcast(extract_vector_elt(x))) shuffle patterns If the bitcast is between types of equal scalar size (i.e. fp<->int bitcasts), then we can safely peek through them Fixes #83289
-
Simon Pilgrim authored
-
Benjamin Maxwell authored
-
Alexander Belyaev authored
expand-arith-ops.mlir fails on windows, but this is unrelated to this PR
-