forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 77
merge main into amd-staging #1039
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
z1-cciauto
merged 74 commits into
amd-staging
from
amd/merge/upstream_merge_20260108130659
Jan 8, 2026
Merged
merge main into amd-staging #1039
z1-cciauto
merged 74 commits into
amd-staging
from
amd/merge/upstream_merge_20260108130659
Jan 8, 2026
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ct targets While lowering phi-nodes to copies, subsequently to f7a53d8, ensure that such copies are placed before any INLINEASM_BR instructions, only if this actually happens to be the case. If a block with an INLINEASM_BR instruction and any of its indirect jump target are distinct blocks, the new copy on the indirect target continues to be normally emitted prior to the terminator. Fixes: llvm#172824.
Adds support for the concat/slice_shape operations after spec change: arm/tosa-specification@efc88a1. This includes the operator definition, same rank checks and level checks during validation. It does not currently include support for folding or shape inference. This will be added in a later commit. --------- Co-authored-by: Iliyan Georgiev <Iliyan.Georgiev@arm.com>
…eFloat` (llvm#152833) The default `half` legalization, which Wasm currently uses, does not respect IEEE conventions: for example, casting to bits may invoke a lossy libcall, meaning soft float operations cannot be correctly implemented. Change to the soft promotion legalization which passes `f16` as an `i16` and treats each `half` operation as an individual f16->f32->libcall->f32->f16 sequence. Of note in the test updates are that `from_bits` and `to_bits` are now libcall-free, and that chained operations now round back to `f16` after each step. Fixes the wasm portion of llvm#97981 Fixes the wasm portion of llvm#97975 Fixes: llvm#96437 Fixes: llvm#96438
Otherwise we run into some issues building some of these internally with our use of clang header modules.
) IRCE may fail to prove predicates when loop bounds are rewritten by LoopConstrainer::applyLoopGuards(). In such cases, simple predicates (e.g. %start < %limit) become obscured by strengthened SCEV expressions, even though they are trivially implied by the guard in the loop preheader. See: llvm#167827 This change makes IRCE attempt to prove predicates both on the original SCEVs and on the guarded SCEVs, preventing incorrect rejection of loops with safe bounds.
…lvm#174982)" This reverts commit 46d0862. This previously landed a couple commits ago and now duplicates the dep, breaking the bazel build.
Errors in array constructor values result in the array having less elements than it should, which can cause other errors that will confuse the user. Avoid this by not returning an expression on errors. Fixes llvm#127425
Using a `raw_svector_ostream` object is not necessary, because this is hidden in the conversion function. In addition, there is no need to reason about a zero termination of the string. Declaring the ascii and ebcdic version of the string variables at the same time makes sure that both strings are allocated with the same size.
…at` (llvm#152632) On PowerPC targets, `half` uses the default legalization of promoting to a `f32`. However, this has some fundamental issues related to inability to round trip. Resolve this by switching to the soft legalization, which passes `f16` as an `i16`. The PowerPC ABI Specification does not define a `_Float16` type, so the calling convention changes are acceptable. Fixes the PowerPC part of llvm#97975 Fixes the PowerPC part of llvm#97981
…lvm#174983) This is a fix for the asan bot after llvm#174386 Failing bot: https://lab.llvm.org/buildbot/#/builders/24/builds/16371 This commit undoes a simplification I thought reduced copied+pasted code. I will merge it like this now to unblock the bot, and then work separately on a different way to share code between both callbacks.
In Kona, WG21 decided to revert trivial relocation (P2786). Keep the notion of relocatability (used in the wild and likely to come back), but remove the keyword which is no longer conforming
This patch refactors `enable_if`s inside `<any>` to use the `..., int> = 0` variant that we try to use throughout the code base and inlines some of the functions into the class body to avoid duplicating the `enable_if`s.
Because `__arm_za_disable` is a private-ZA function, it's only ever entered with ZA state `off` or `dormant`. If the state is `off` then we can safely return and there is no need to call `__arm_tpidr2_save` or to explicitly set PSTATE.ZA or TPIDR2_EL0 to zero.
Adds a pattern matcher for floating-point absolute value (ISD::FABS), following the same pattern as m_Abs for integer absolute value. Fixes llvm#174751
…74985) Appears to be a copy+paste type - most of the x86 masked truncation intrinsics still can't be made constexpr at this time Fixes llvm#166814
The compiler should not generate subvectors with the same extractelement instructions, it may cause a crash and leads to inefficient vectorization. Fixes llvm#174773
llvm#166494 added support for using `inttoptr` in global initialisation, and lowering int into `OpSpecConstantOp OpConvertUToPtr`. Unfortunately, it slightly more subtle case / exposed an existing issue around the `COPY` pseudo-op. This patch ensures that we glance through a `COPY` when figuring out whether an `OpConvertUToPtr` is actually operating on a global. We also correctly handle the case where a `G_PTR_ADD` is used by an `OpSpecConstantOp` in the context of global initialisation, which would otherwise lead to broken SPIR-V wherein the latter would reference a non constant Op. --------- Co-authored-by: Marcos Maronas <marcos.maronas@intel.com>
…m#174505) This is done for logical operations and auipc/lui. Patch based on code written by Tim Northover.
…s from a common load/broadcastload (llvm#174986) Allows us to handle freely concatable cases after a broadcast load has become shared by different vector width uses by peeking through bitcasts/extract_subvector nodes
Fixed typo and added initialization of modifier.
…sn't legal/custom for the promoted type. (llvm#174911) This allows the expand code to see the original size. Previously we relied on computeKnownBits to optimize the code after it is expanded later. This removes the need to zero extend the input during promotion that was needed to make computeKnownBits work.
Improve reported known fp-class when simplifying select. Previously we just reported the conservative result that the result class could be either of the inputs. Use the new utility to apply the compare+select logic the default case of computeKnownFPClass would catch.
VINTERP instructions always have src0, src1, src2 and dst.
Similar to the other PRs, this looks up the type from a member variable. Here, we can use the type of `_Mapptr`. On its own, that's enough to pass the test with clang-cl.
In llvm#174641, package.json was updated, but the package-lock.json file wasn't regenerated.
Depends on: * llvm#174618 If a format entity calls back into `Format` and passes it a format entity type that we're already in the process of parsing, we are likely going to run into infinite recursion and blow the stack. I think this is only an issue when a format entity calls Format on a format string provided by the user (otherwise we're in control of the recursion). An example of this can be seen in the test-case adjusted by this patch. This seems to be causing actual crashes in the field, so this patch adds basic tracking to `Formatter::Format` that checks whether we're recursively parsing the same entity. This may very well be intended by some entities (e.g., `Root` and `Scope`), so there is an escape hatch for those. There's also a special case where `Variable` causes a recursive format (which I pointed out in a source comment). We could narrow the scope of what kind of recursion is allowed by adding a `UserProvidedFormatChild` (or similar) flag to `Entry`, and only disallow recursing on those kinds of entries. For now I just use an exemption list in `IsInvalidRecursiveFormat`. Adding a unit-test for this is unfortunately tricky because the only format entity that currently suffers from this is `${function.name-with-args}`, which requires a language plugin and valid target. If we really wanted to we could probably mock all of those, but the shell test provides test coverage for the previously crashing case. rdar://166890120
`vscode-test` requirest a GUI or something that emulates one. Use the Mocha test library directly for unitest Run unittests using `npm run unittest`
Since this code was last reviewed, more relaxations have been added to the psABI for existing standard relocations that LLVM didn't have marked as relaxable. This change ensures that LLVM marks the following relocations (and their respective fixups) as relaxable: - `R_RISCV_JAL` - `R_RISCV_GOT_HI20` - `R_RISCV_TPREL_HI20` - `R_RISCV_TLSDESC_HI20` This also updates the linker relaxation test to use `-NEXT` to check all the output lines. There are lots more emitted relocations, not only due to JAL being relaxable, but branches are now also marked linker relaxable because they can be turned into `b<cc>; jal` during assembly relaxation, which may also be marked relaxable.
…0041) Use the default of `LLVM/Tests/Unit` to group these tests with other LLVM unit test targets in the IDE.
…llvm#174649) Remove problematic `return()` statements from mlir_configure_python_dev_packages macro and convert nanobind detection to FATAL_ERROR. Using `return()` in a CMake macro is problematic because it returns from the calling scope, not the macro itself, causing the parent CMakeLists.txt to silently skip subsequent configuration steps. This leads to confusing build failures when Python bindings are enabled but nanobind is missing. With this change, users get an immediate error with clear instructions to install nanobind or set nanobind_DIR, rather than silent configuration failures.
Create PPCISD nodes for DMF DMXXINSTDMR512 and DMXXINSTDMR256 operations to allow type checking.
…m#174868) Fix a crash when tab-completing arguments for parsed commands that have arguments but no options. In `HandleArgumentCompletion`, `GetOptions()` returns `nullptr` when a command has no options defined. The code was dereferencing this pointer without a null check, causing a segfault when attempting tab completion.
Implement support for AtomicExpr for Aggregate expr
Summary: This patch adds an LLVM intrinsic and lowering for a subgroup ballot and a corresponding clang builtin. This uses the already present support but provides in a way accessible to other targets. With this and llvm#174655 we should be able to most of the basic functions, like shuffling, active masks, and reductions. More work will be needed for canonicalizing / exposing the SPIR-V functions, but these are the fundamental builtins I need.
…izer (llvm#173734) This patch extends the AArch64ConditionOptimizer pass to handle CSINC instructions within a single basic block, complementing the existing cross-block branch optimization. The optimization finds two CMP+CSINC pairs comparing the same register with immediates differing by 1, and adjusts one comparison to enable CSE to eliminate the redundant CMP instruction. Example transformation: ``` cmp w8, #10 csinc w9, w0, w1, gt ; w9 = (w8 > 10) ? w0 : w1+1 cmp w8, #9 ; Removed by CSE after adjustment csinc w10, w0, w1, gt ; w10 = (w8 > 9) ? w0 : w1+1 ``` After optimization: ``` cmp w8, #10 csinc w9, w0, w1, gt ; w9 = (w8 > 10) ? w0 : w1+1 csinc w10, w0, w1, ge ; w10 = (w8 >= 10) ? w0 : w1+1 ``` The existing cross-block logic has also been extracted into its own method. Any feedback on code quality and better practices is highly welcome. Co-authored-by: Hussam Alhassan <hsm.link@proton.me>
…st targets (llvm#174905) Some tests are already supported on "remote" devices and simulators. However, there is currently no way to distinguish a remote macOS host from a local one. This adds the darwin-remote feature which is common to all test targets which use a wrapper script (e.g. iossim_run.py). rdar://167735355 --------- Co-authored-by: Dan Blackwell <danblackwell95@gmail.com>
…vm#175035) As the lead maintainer, I've been asked by the project council to confirm that we have an up-to-date list of active maintainers for LLDB. In light of that, I'd like to nominate Charles and Nerixyz as Windows maintainers. As a reminder, our community policies regarding the responsibilities of maintainers can be found here: https://llvm.org/docs/DeveloperPolicy.html#maintainers.
I want to propose adding summary providers for `std::*_ordering` types introduced in `C++20`. GDB already has pretty-printers for [them](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/python/libstdcxx/v6/printers.py#L1788), so I think it will be useful.
Just fixing a typo from a copy paste.
This patch fixes the indentation of 2 docstrings in `TestDAP_runInTerminal.py`. Running `black` on that file with the default settings causes this change. `darker` does not seem to catch it. This is a prelude to llvm#174635.
…er (llvm#173111) This change implements part of https://discourse.llvm.org/t/rfc-lldb-make-pdbastbuilder-language-agnostic/89117, the goal of which is make `PdbAstBuilder` language-agnostic. It adds several new interface methods to `PdbAstBuilder` which allow `SymbolFileNativePDB` to interact with it without using Clang-specific types. These new methods would make up much of the interface of a future abstract `PdbAstBuilder`. `SymbolFileNativePDB` is updated to use these. The old Clang-specific methods were renamed if used by `UdtRecordCompleter` or internally, or removed where possible.
…#174511) A substring reference where the lower bound is higher than the upper bound is defined in 9.4.1 to be zero-length. Thus, a reference to a substring of a CHARACTER*(0) string such as string(foo():2) cannot be a compile-time error since we do not know the return value of foo(). We also should not error if the lbound > ubound at compile time.
This enables assumes to work. Somehow the most obvious example I could think of does not work (return of assumed argument). The context instruction for the return seems to be off by one.
Introduce a new flag `--call-graph-info` which outputs callgraph ELF section information to the console as a text output or as JSON output.
The cause is that in `python3.14`, `fcntl.ioctl` now throws a buffer overflow error when the buffer is too small or too large (see python/cpython#132919). This caused the Python interpreter to fail terminal detection and not properly echo user commands back to the screen. Fix by dropping the custom terminal size check entirely and using the built-in `sys.stdin.isatty()` instead. Fixes llvm#173302
…part 4) (llvm#174906) From this point on, the conversion is done to HLFIR, not to FIR. Tests converted in Lower: allocatables.f90, allocate-source-pointers.f90, array-constructor-2.f90, array-elemental-calls-3.f90, array-elemental-calls.f90
lldb-dotest was likely getting LLDB_FRAMEWORK_DIR from another place before. Now it's undefined when lldb-dotest is configured, so it's an empty string. Some API tests will fail to link against LLDB.
…lback (llvm#174983)" This reverts commit cc1bb84.
Collaborator
dpalermo
approved these changes
Jan 8, 2026
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.