- Mar 01, 2024
-
-
Farzon Lotfi authored
This change implements the frontend for #70099 Builtins.td - add the frac builtin CGBuiltin.cpp - add the builtin to DirectX intrinsic mapping hlsl_intrinsics.h - add the frac api SemaChecking.cpp - add type checks for builtin IntrinsicsDirectX.td - add the frac intrinsic The backend changes for this are going to be very simple: https://github.com/llvm/llvm-project/commit/f309a0eb558b65dfaff0d1d23b7d07fb07e27121 They were not included because llvm/lib/Target/DirectX/DXIL.td is going through a major refactor.
-
Kalesh Singh authored
File size increase were found negligible from sparseness and zero block compression in f2fs and ext4 (supported filesystems for Android's userdata partition). Signed-off-by:
Kalesh Singh <kaleshsingh@google.com> Co-authored-by:
Kalesh Singh <kaleshsingh@google.com>
-
Jason Eckhardt authored
Fields GenericField::IsInstruction and GenericField::Enum can be simultaneously active for a given field. Methods compareBy and primaryRepresentation both order the checking of IsInstruction before GenericField::Enum. Do the same in getNumericKey for consistency.
-
Alexey Bataev authored
-
Jonas Devlieghere authored
Don't cache lldb_find_python_module result as that requires you to do a clean build after installing the dependency.
-
SunilKuravinakop authored
Modified clang/lib/CodeGen/CGStmtOpenMP.cpp to accept multiple use & destroy clauses with interop directive. Modified clang/test/OpenMP/interop_codegen.cpp to check for the changes. Co-authored-by:Sunil Kuravinakop <kuravina@pe28vega.us.cray.com>
-
Slava Zakharin authored
This adds support for 128-bit float versions of SCALE, NEAREST, MOD, MODULO, SET_EXPONENT, EXPONENT, FRACTION, SPACING and RRSPACING.
-
erichkeane authored
I discovered while debugging something else that this could possibly cause an assert if I'm not careful with followup patches, so add the tests.
-
Craig Topper authored
Instead of caching STI in the RISCVELFTargetStreamer, store the two flags we need from it. My goal is to allow RISCVAsmPrinter to override these flags using IR module metadata for LTO. So they need to be separated from the STI used to construct the TargetStreamer. This patch should be NFC as long as no one is changing the contents of the STI that was used to construct the TargetStreamer between the constructor and the use of the flags.
-
Jeremy Morse authored
This reverts commit 3fda50d3. Apparently I've missed a hunk while staging this; will back out for now. Picked up here: https://lab.llvm.org/buildbot/#/builders/139/builds/60429/steps/6/logs/stdio
-
Sirraide authored
When resolving the type of `this` inside a member function, we were attaching all qualifiers present on the member function to the class type and then making it a pointer; however, `__restrict`, unlike `const` and `volatile`, needs to be attached to the pointer type rather than the pointee type. This fixes #82941, #42411, and #18121.
-
Jeremy Morse authored
As part of the RemoveDIs project we need LLVM to insert instructions using iterators wherever possible, so that the iterators can carry a bit of debug-info. This commit implements some of that by updating the contents of llvm/lib/Transforms/Utils to always use iterator-versions of instruction constructors. There are two general flavours of update: * Almost all call-sites just call getIterator on an instruction * Several make use of an existing iterator (scenarios where the code is actually significant for debug-info) The underlying logic is that any call to getFirstInsertionPt or similar APIs that identify the start of a block need to have that iterator passed directly to the insertion function, without being converted to a bare Instruction pointer along the way. I've also switched DemotePHIToStack to take an optional iterator: it needs to take an iterator, and having a no-insert-location behaviour appears to be important. The constructors for ICmpInst and FCmpInst have been updated too. They're the only instructions that take block _references_ rather than pointers for certain calls, and a future patch is going to make use of default-null block insertion locations. All of this should be NFC.
-
Francesco Petrogalli authored
-
chuongg3 authored
Legalize Smaller/Larger than legal vectors with i8 and i16 element sizes. Vectors with elements smaller than i8 will get widened to i8 elements.
-
Jonas Devlieghere authored
This executed Alex' idea [1] of adding pexpect to the list of "strict test requirements" as we're planning to stop vendoring it. This will ensure all the bots have the package before we toggle the default. [1] https://github.com/llvm/llvm-project/pull/83191
-
Jonas Devlieghere authored
In a04879ce, dsymutil switched from using TempFile to createTemporaryFile. This caused a regression because the two use different permissions: - TempFile opens the file as all_read | all_write - createTemporaryFile opens the file as owner_read | owner_write The latter turns out to be problematic for dsymutil because it either promotes the temporary to a proper output file, or it would pass it to `lipo` to create a universal binary and `lipo` preserves the permissions of the input files. Either way, this caused issues when the build system was run as a different user than the one ingesting the resulting binaries. I did some version control archeology and I couldn't find evidence that these permissions were chosen purposely. Both could be considered reasonable default. This patch changes the permissions to `all read | all write` to make the two consistent and match the one currently used by the higher level abstraction (TempFile). rdar://123722848
-
- Feb 29, 2024
-
-
Jonathan Thackray authored
Correct an issue with Arm Neoverse N2 after it was changed to a v9a core in change f576cbe4: * FEAT_FHM should be enabled for this core.
-
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.
-